Diễn Đàn » Hướng Dẫn Lập trình

Gửi e-mail thông qua SMTP_trong VB.NET

0 trả lời, 315 lượt xem — Trang 1 / 1
<Bài viết đã được chỉnh sửa lúc 2007-03-13 03:29:43dvbooks>
Vấn đề:  Bạn muốn gửi một e-mail thông qua một SMTP-server (Simple Mail Transfer Protocol server).
Giải quyết:  Sử dụng các lớp SmtpMail và MailMessage trong không gian tên System.Web.Mail.
Các lớp trong không gian tên System.Web.Mail cung cấp một vỏ bọc cho thành phần Collaboration Data Objects for Windows 2000 (CDOSYS). Chúng cho phép bạn soạn và gửi các thông điệp e-mail có-định-dạng bằng SMTP.
Dễ dàng sử dụng các kiểu này. Bạn chỉ việc tạo một đối tượng MailMessage, chỉ định địa chỉ e-mail của người gửi và người nhận, và đặt nội dung thông điệp trong thuộc tính Body:

Dim MyMessage As New MailMessage()
MyMessage.To = [email=someone@somewhere.com]someone@somewhere.com[/email]
MyMessage.From = [email=me@somewhere.com]me@somewhere.com[/email]
MyMessage.Subject = "Hello"
MyMessage.Priority = MailPriority.High
MyMessage.Body = "This is the message!"

Nếu muốn, bạn có thể gửi một thông điệp HTML bằng cách thay đổi định dạng thông điệp và sử dụng các thẻ HTML:


MyMessage.BodyFormat = MailFormat.Html
MyMessage.Body = "&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;" & _ 
"&lt;BODY&gt;This is the message!&lt;/BODY&gt;&lt;/HTML&gt;"

Ngay cả bạn có thể thêm các file đính kèm bằng tập hợp MailMessage.Attachments và lớp MailAttachment.

Dim MyAttachment As New MailAttachment("c:\mypic.gif")
MyMessage.Attachments.Add(MyAttachment)

Để gửi thông điệp, bạn chỉ việc chỉ định tên SMTP-server và gọi phương thức SmtpMail.Send.

SmtpMail.SmtpServer = "test.mailserver.com"
SmtpMail.Send(MyMessage)

Tuy nhiên, có một số vấn đề đáng quan tâm khi sử dụng lớp SmtpMail để gửi một thông điệp e-mail. Lớp này yêu cầu một relay-server hay SMTP-server cục bộ trên mạng của bạn. Ngoài ra, lớp SmtpMail không hỗ trợ việc xác thực, do đó nếu SMTP-server của bạn yêu cầu username và password, bạn sẽ không thể gửi bất kỳ mail nào. Để vượt qua các trở ngại này, bạn có thể sử dụng thành phần CDOSYS một cách trực tiếp thông qua COM Interop (giả sử bạn có một phiên bản server của Windows hay Microsoft Exchange). Bạn cũng có thể truy xuất Microsoft Outlook thông qua COM Automation.

Dim MyMessage As New CDO.Message()
Dim Config As New CDO.Configuration()
' Chỉ định cấu hình.
Config.Fields(cdoSendUsingMethod) = cdoSendUsingPort
Config.Fields(cdoSMTPServer) = "test.mailserver.com"
Config.Fields(cdoSMTPServerPort) = 25
Config.Fields(cdoSMTPAuthenticate) = cdoBasic
Config.Fields(cdoSendUserName) = "username"
Config.Fields(cdoSendPassword) = "password"
' Cập nhật cấu hình.
Config.Fields.Update()
MyMessage.Configuration = Config
' Tạo thông điệp.
MyMessage.To = [email=someone@somewhere.com]someone@somewhere.com[/email]
MyMessage.From = [email=me@somewhere.com]me@somewhere.com[/email]
MyMessage.Subject = "Hello"
MyMessage.TextBody = "This is the message!"
' Gửi thông điệp.
MyMessage.Send()

Chú ý rằng không thể sử dụng giao thức SMTP để thu lấy e-mail. Đối với tác vụ này, bạn cần giao thức POP3 hay IMAP.
 
Trích từ "Các giải pháp lập trình Visual Basic. Net (tập 1)"
Đăng nhập để trả lời
0