VB.Net發送電子郵件

VB.Net應用程式可發送電子郵件。System.Net.Mail名稱空間包含用於向簡單郵件傳輸協議(SMTP)伺服器發送電子郵件以供傳送的類。

下表列出了一些常用的類:

編號 描述
1 Attachment 代表電子郵件的附件。
2 AttachmentCollection 將附件存儲為電子郵件的一部分。
3 MailAddress 代表電子郵件發件人或收件人的地址。
4 MailAddressCollection 存儲與電子郵件關聯的電子郵件地址。
5 MailMessage 表示可以使用SmtpClient類發送的電子郵件。
6 SmtpClient 允許應用程式使用簡單郵件傳輸協議(SMTP)發送電子郵件。
7 SmtpException 表示當SmtpClient無法完成SendSendAsync操作時引發的異常。

SmtpClient類

SmtpClient類允許應用程式使用簡單郵件傳輸協議(SMTP)發送電子郵件。

以下是SmtpClient類的一些常用屬性:

編號 屬性 描述
1 ClientCertificates 指定應使用哪些證書來建立安全套接字層(SSL)連接。
2 Credentials 獲取或設置用於驗證發件人的憑證。
3 EnableSsl 指定SmtpClient是否使用安全套接字層(SSL)來加密連接。
4 Host 獲取或設置用於SMTP事務的主機的名稱或IP地址。
5 Port 獲取或設置用於SMTP事務的端口。
6 Timeout 獲取或設置一個值,該值指定同步發送呼叫超時之後的時間量。
7 UseDefaultCredentials 獲取或設置一個布爾值,該值控制是否使用請求發送DefaultCredentials

以下是SmtpClient類的一些常用方法:

編號 方法 描述
1 Dispose 將QUIT消息發送到SMTP伺服器,正常結束TCP連接,並釋放當前SmtpClient實例使用的所有資源。
2 Dispose(Boolean) 將QUIT消息發送到SMTP伺服器,正常結束TCP連接,釋放SmtpClient類的當前實例使用的所有資源,並可選地處置受管資源。
3 OnSendCompleted 引發SendCompleted事件。
4 Send(MailMessage) 將指定的消息發送到SMTP伺服器進行傳送。
5 Send(String, String, String, String) 將指定的電子郵件發送到SMTP伺服器進行傳送。 郵件發件人,收件人,主題和郵件正文使用String對象指定。
6 SendAsync(MailMessage, Object) 將指定的電子郵件發送到SMTP伺服器進行傳送。 此方法不會阻塞調用線程,並允許調用方將對象傳遞給操作完成時調用的方法。
7 SendAsync(String, String, String, String, Object) 發送電子郵件到SMTP伺服器進行傳送。 郵件發件人,收件人,主題和郵件正文使用String對象指定。 此方法不會阻塞調用線程,並允許調用方將對象傳遞給操作完成時調用的方法。
8 SendAsyncCancel 取消非同步操作以發送電子郵件。
9 SendMailAsync(MailMessage) 將指定的消息發送到SMTP伺服器以作為非同步操作進行傳送。
10 SendMailAsync(String, String, String, String) 將指定的消息發送到SMTP伺服器以作為非同步操作進行傳送。郵件發件人,收件人,主題和郵件正文使用String對象指定。
11 ToString 返回表示當前對象的字串。

以下示例演示如何使用SmtpClient類發送郵件。 以下幾點需要注意:

  • 必須指定用於發送電子郵件的SMTP主機伺服器。主機和端口屬性對於不同的主機伺服器是不同的。這個示例中將使用QQ郵件伺服器。
  • 如果SMTP伺服器需要,需要為 Credentials 頒發證書。
  • 分別使用MailMessage.FromMailMessage.To屬性提供發件人的電子郵件地址和收件人的電子郵件地址。
  • 使用MailMessage.Body屬性指定郵件內容。

示例

在這個例子中,創建一個簡單的應用程式來發送電子郵件。參考以下步驟:

  • 在窗體中添加三個標籤,三個文本框和一個按鈕控件。
  • 將標籤的Text屬性分別更改為:“發送者:”“接收者:”“郵件內容:”
  • 將文本的Name屬性分別更改為:txtFromtxtTotxtMessage
  • 將按鈕控件的Text屬性更改為“發送”

設計窗體的效果如下所示 -

在代碼編輯器中添加下麵的代碼 -

Imports System.Net.Mail

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Set the caption bar text of the form.
        txtFrom.Text = "769728683@qq.com"
        txtTo.Text = "769728683@qq.com"
        Me.Text = "VB.Net發送郵件示例-xuhuhu.com"
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            'Dim Smtp_Server As New SmtpClient
            Dim smtp As New System.Net.Mail.SmtpClient("smtp.qq.com", 25)
            Dim mail As New System.Net.Mail.MailMessage()

            smtp.UseDefaultCredentials = False
            smtp.Credentials = New System.Net.NetworkCredential("29888814@qq.com", "zrp29888814encaei")

            mail.Subject = "郵件主題a"
            mail.SubjectEncoding = System.Text.Encoding.UTF8
            mail.BodyEncoding = System.Text.Encoding.UTF8
            mail.From = New System.Net.Mail.MailAddress(txtFrom.Text)
            mail.Priority = System.Net.Mail.MailPriority.Normal
            mail.IsBodyHtml = True
            mail.Body = txtMessage.Text
            mail.To.Add(txtTo.Text)

            smtp.Send(mail)
            MsgBox("郵件已發送~!")

        Catch error_t As Exception
            MsgBox(error_t.ToString)
        End Try

    End Sub
End Class

注意:必須提供您的QQ郵箱帳號和真實密碼的憑據,才能登錄SMTP伺服器發送郵件。

首先我們要知道用VB.Net代理登錄QQ郵箱發郵件,是需要更改自己QQ郵箱設置的。在這裏大家需要做兩件事情:郵箱開啟SMTP功能 、獲得授權碼。下麵來看看如何更改範本代碼,實現使用VB.Net登錄QQ郵箱發送QQ郵件。

注意:也可以使用其他服務商的 SMTP 訪問(QQ、網易、Gmail等)。

使用QQ郵件發送郵件之前如何設置授權碼,參考:

http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

當執行上面的代碼並使用Microsoft Visual Studio工具欄上的“開始”按鈕運行時,它將顯示以下窗口,將使用該窗口發送電子郵件,自己嘗試。


上一篇: VB.Net Excel工作表 下一篇: VB.Net XML文檔處理