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 = "[email protected]"
        txtTo.Text = "[email protected]"
        Me.Text = "VB.Net傳送郵件範例-tw511.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("[email protected]", "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工具列上的「開始」按鈕執行時,它將顯示以下視窗,將使用該視窗傳送電子郵件,自己嘗試。