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