|
VB.NET发送电子邮件(通过使用SmtpClient类)
以下代码已通过VS2008测试。
[vb] view plain copy
 
- ''' <summary>
- ''' 通过SmtpClient类发送电子邮件
- ''' </summary>
- ''' <param name="ReceiveAddressList">收件人地址列表</param>
- ''' <param name="Subject">邮件主题</param>
- ''' <param name="Content">邮件内容</param>
- ''' <param name="AttachFile">附件列表Hastable。KEY=文件名,Value文件路径</param>
- Private Function SendMail(ByVal ReceiveAddressList As List(Of String), ByVal Subject As String, ByVal Content As String, _
- Optional ByVal AttachFile As Hashtable = Nothing) As Boolean
- Dim i As Integer
- 'SMTP客户端
- Dim smtp As New System.Net.Mail.SmtpClient("SMTP.163.COM")
- 'smtp.Host = "smtp.163.com" 'SMTP服务器名称
- '发件人邮箱身份验证凭证。 参数分别为 发件邮箱登录名和密码
- smtp.Credentials = New System.Net.NetworkCredential("邮箱账户", "邮箱密码")
- '创建邮件
- Dim mail As New System.Net.Mail.MailMessage()
- '主题编码
- mail.SubjectEncoding = System.Text.Encoding.GetEncoding("GB2312")
- '正文编码
- mail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312")
- '邮件优先级
- mail.Priority = System.Net.Mail.MailPriority.Normal
- '以HTML格式发送邮件,为false则发送纯文本邮箱
- mail.IsBodyHtml = True
- '发件人邮箱
- mail.From = New System.Net.Mail.MailAddress("发件人邮箱")
-
- '添加收件人,如果有多个,可以多次添加
- If ReceiveAddressList.Count = 0 Then Return False
- For i = 0 To ReceiveAddressList.Count - 1
- mail.To.Add(ReceiveAddressList.Item(i))
- Next
-
- '邮件主题和内容
- mail.Subject = Subject
- mail.Body = Content
-
- '定义附件,参数为附件文件名,包含路径,推荐使用绝对路径
- If Not AttachFile Is Nothing AndAlso AttachFile.Count <> 0 Then
- For Each sKey As String In AttachFile.Keys
- Dim objFile As New System.Net.Mail.Attachment(AttachFile.Item(sKey))
- '附件文件名,用于收件人收到附件时显示的名称
- objFile.Name = sKey
- '加入附件,可以多次添加
- mail.Attachments.Add(objFile)
- Next
- End If
-
- '发送邮件
- Try
- smtp.Send(mail)
- MessageBox.Show("邮件发送成功!")
- Return True
- Catch
- MessageBox.Show("邮件发送失败!")
- Return False
- Finally
- mail.Dispose()
- End Try
- End Function
本篇文章的主要开发环境是Visual Studio 2008,Visual Studio系列产品一直以来都提供了强大的控件功能,然而我们利用这些控件可以编写出功能强大的应用程序,Visual Studio2008在一些特性上也做出了许多的改进。本文主要利用微软的最新.net开发工具为大家展示创建邮件发送程序的方法,为大家介绍怎样向指定的邮件地址发送邮件,以及登录验证的一些技巧。很适合.net开发工具的初学者,具有一定的实用价值。 打开 Visual Studio 2008在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序(Windows Application)。单击确定 (OK) 如图1。
[附件已丢失]
选择Form1窗体,在Form1窗体中添加如下控件:
GroupBox1、Label1、Label2、Label3、Label4、Label5、Label6、和同时创建7个文本框(Textbox1- Textbox7)、Checkbox1、Button1控件 控件属性设置如下:
[附件已丢失]
适当的调整控件在界面的布局,网站发贴软件最终界面效果如图2
[附件已丢失]
接下来我们需要输入代码了,首先进入代码编辑器 注意:在编写代码之前我们需要了解MailMessage 属性,在这里我们将会要使用MailMessage 属性。 MailMessage 属性详细如下表所示
[附件已丢失]
代码如下: 首先进行声明: Imports System.net.Mail Imports System.Text Imports System.Security Imports System.Net.Sockets 进入CheckBox1_CheckedChanged事件万能脚本工具 万能营销软件 Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Checkbox1.CheckedChanged If Checkbox1.Checked = True Then txtName.Enabled = True txtPassword.Enabled = True Else txtName.Enabled = False txtPassword.Enabled = False End If End Sub 进入Button1_Click事件 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim mail As New MailMessage() mail.From = New MailAddress(txtFrom.Text) mail.To.Add(txtaccept.Text) '设置邮件内容 mail.Subject = txtSubject.Text mail.Body = txtContent.Text ''设置电子邮件优先级 mail.Priority = MailPriority.High '获取与此电子邮件传输的标头 mail.Headers.Add("YourCompany", "yourname") mail.Headers.Add("YourLocation", "yourlocation") Dim Mysmtp As New SmtpClient(txtSMTP.Text) If Checkbox1.Checked = True Then Mysmtp.Credentials = New System.Net.NetworkCredential(txtName.Text, txtPassword.Text) End If Try Mysmtp.Send(mail) MsgBox("邮件已经发出,邮件已经发送到指定的邮件地址.", MsgBoxStyle.Information, "实例,创建邮件发送程序") Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "抱歉。邮件发送失败") End Try End Sub 代码输入完毕后,我们运行程序进行测试,填上自己邮箱的用户名及密码和SMTP服务器地址。发送一封电子邮件试一试,如图3。
[附件已丢失]
提示:邮件发送成功,如图4。我们就成功的发送了电子邮件,大家在发送时需要注意SMTP的地址。
[附件已丢失]
这是一个简单的邮件发送程序,本实例中用到了MailMessage 属性。程序编写完成后我们对MailMessage 属性有了很好的了解,好好地去利用MailMessage 属性相信你也能编写出功能强大而又专业的电子邮件程序。
|