当前位置: 首页 > 教程 > VB.Net >

VB.Net发送电子邮件

精华
小牛编辑
155浏览
2023-03-14

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发送邮件示例-yiibai.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工具栏上的“开始”按钮运行时,它将显示以下窗口,将使用该窗口发送电子邮件,自己尝试。