471
Chương 11: Lập trình mạng
SmtpMail.SmtpServer = "test.mailserver.com";
SmtpMail.Send(myMessage);
Tuy nhiên, có một vài vấn đề khi sử dụng lớp
SmtpMail
để gửi một thông điệp e-mail. Lớp này
cần một SMTP-server cục bộ hay một relay-server trên mạng. Ngoài ra, lớp
SmtpMail
không
hỗ trợ việc xác thực, do đó, nếu SMTP-server yêu cầu username và password, bạn sẽ không
thể gửi bất kỳ mail nào. Để khắc phục vấn đề này, bạn có thể trực tiếp sử dụng thành phần
CDOSYS thông qua COM Interop (giả sử bạn có phiên bản server của Windows hay Microsoft
Exchange).
Nhớ rằng, giao thức SMTP không được sử dụng để lấy e-mail. Đối với công việc
này, bạn cần giao thức POP3 hay IMAP, cả hai giao thức này đều không có trong
.NET Framework.
Để có thêm thông tin về cách sử dụng và cấu hình SMTP-server, bạn hãy tham
khảo các quyển sách chuyên về IIS.
15.
15.
G i và nh n e-mail v i MAPI
ử
ậ
ớ
G i và nh n e-mail v i MAPI
ử
ậ
ớ
Bạn muốn gửi một thông điệp e-mail, nhưng SMTP-server (Simple Mail Transfer
Protocol server) chưa được cấu hình trên máy tính.
Sử dụng Simple MAPI (Messaging Application Programming Interface) bằng
cách nhập hàm cần thiết từ thư viện hệ thống không-được-quản-lý Mapi32.dll.
MAPI là giao diện cho phép bạn tương tác với các tính năng mailing được tích hợp trong hệ
điều hành Windows. Bạn có thể sử dụng MAPI (thông qua các hàm API không-được-quản-lý,
hoặc thông qua thành phần MAPI đi cùng với Visual Studio 6) để tương tác với mail-client
mặc định (thường là Microsoft Outlook hay Outlook Express). Các tác vụ bao gồm: lấy thông
tin contact từ sổ địa chỉ, lấy thông điệp trong Inbox, soạn và gửi thông điệp. Đáng tiếc, không
có lớp nào sử dụng MAPI trong .NET Framework. Tuy nhiên, bạn có thể sử dụng thư viện
không-được-quản-lý Mapi32.dll.
Thách thức chính khi sử dụng Simple MAPI trong .NET là marshal các cấu trúc được sử dụng
trong .NET thành các cấu trúc mà Simple MAPI cần, sau đó marshal các cấu trúc do Simple
MAPI trả về cho ứng dụng .NET. Đây không phải là một công việc đơn giản. Tuy nhiên,
Microsoft cung cấp một giải pháp toàn vẹn trong một thành phần C# tổng quát (có thể tải miễn
phí). Bạn có thể sử dụng hai dự án dưới đây:
•
Một thành phần thư viện lớp (Class Library Component) bọc lấy các hàm Simple MAPI
và làm cho chúng có hiệu lực thông qua các phương thức của lớp.
•
Một chương trình (thử nghiệm) sử dụng thành phần này để đăng nhập, đăng xuất, đọc
mail, gửi mail...
Mã lệnh của cả hai dự án này không mấy phức tạp, nhưng rất dài nên không trình bày ở đây
(bạn hãy xem trong đĩa CD đính kèm).
Đối với một ví dụ phức tạp hơn (xây dựng trên thư viện Simple MAPI của
Microsoft để tạo một ứng dụng Windows Form), một dự án C# mẫu (có thể tải