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 属性相信你也能编写出功能强大而又专业的电子邮件程序。