16,555
社区成员
发帖
与我相关
我的任务
分享
Imports Microsoft.VisualBasic
Imports System.Net.Mail
Imports System.Net.Mime
Namespace RPT.Core
''' <summary>
''' 邮件发送类
''' </summary>
''' <remarks></remarks>
Public Class EmailSender
''' <summary>
''' 发送邮件
''' </summary>
''' <param name="accepterEmail">收信地址</param>
''' <param name="senderEmail">发信地址</param>
''' <param name="senderEmailPassword">发信email密码</param>
''' <param name="senderName">发信人别名</param>
''' <param name="eamilTitle">邮件标题</param>
''' <param name="emailContent">邮件内容</param>
''' <param name="attachment">附件列表</param>
''' <param name="serverHost">邮件服务器主机名</param>
''' <param name="serverPort">邮件服务器端口号</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function Send(ByVal accepterEmail As String _
, ByVal senderEmail As String _
, ByVal senderEmailPassword As String _
, ByVal senderName As String _
, ByVal eamilTitle As String _
, ByVal emailContent As String _
, ByVal attachment As String() _
, ByVal serverHost As String _
, Optional ByVal serverPort As String = "25") As Boolean
Dim flag As Boolean = False
Dim arrEmail() As String = accepterEmail.Split(";")
Dim msg As MailMessage = Nothing
Dim Data As Attachment = Nothing
Dim client As SmtpClient = Nothing
Try
msg = New MailMessage
'收信人
For Each accepterEmail In arrEmail
If accepterEmail.Trim <> "" Then
msg.To.Add(accepterEmail.Trim())
End If
Next
'发信人
msg.From = New MailAddress(senderEmail, senderName, System.Text.Encoding.UTF8)
'邮件标题
msg.Subject = eamilTitle
'邮件标题编码
msg.SubjectEncoding = System.Text.Encoding.UTF8
'邮件内容
msg.Body = emailContent
'邮件内容编码
msg.BodyEncoding = System.Text.Encoding.UTF8
'是否是HTML邮件
msg.IsBodyHtml = False
'邮件优先级
msg.Priority = MailPriority.High
'添加附件
If (attachment IsNot Nothing) AndAlso (attachment.Length > 0) Then
For Each att As String In attachment
If (String.IsNullOrEmpty(att) = False) AndAlso (att.Trim() <> String.Empty) Then
Data = New Attachment(att, MediaTypeNames.Application.Octet)
Dim disposition As ContentDisposition = Data.ContentDisposition
disposition.CreationDate = System.IO.File.GetCreationTime(att)
disposition.ModificationDate = System.IO.File.GetLastWriteTime(att)
disposition.ReadDate = System.IO.File.GetLastAccessTime(att)
'加入邮件附件
msg.Attachments.Add(Data)
End If
Next
End If
client = New SmtpClient
client.UseDefaultCredentials = False
If senderEmail.IndexOf("@") > 0 Then
senderEmail = senderEmail.Substring(0, senderEmail.IndexOf("@"))
End If
'发信账号密码
client.Credentials = New System.Net.NetworkCredential(senderEmail, senderEmailPassword)
'邮件服务端口
client.Port = IIf(String.IsNullOrEmpty(serverPort) = True, 25, Integer.Parse(serverPort))
'SMTP服务
client.Host = serverHost
'经过ssl加密
client.EnableSsl = False
client.Send(msg)
Return True
Catch ex As Exception
Return False
Finally
If Data IsNot Nothing Then
Data.Dispose()
End If
If msg IsNot Nothing Then
msg.Dispose()
End If
Data = Nothing
msg = Nothing
client = Nothing
End Try
End Function
End Class
End Namespace