以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- MailMessage方式同步/异步发送邮件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=140192) |
-- 作者:z769036165 -- 发布时间:2019/8/31 13:39:00 -- MailMessage方式同步/异步发送邮件 升级.net 4.0后 自带的MailSender发送功能,需要增加指定邮件编码,且增加编码后,附件还是存在乱码的现象,同时MailSender无法发送html邮件。 因此在论坛找了有很多关于MailMessage发送的贴,发现比较零散,汇总下这些内容: Dim client As New System.Net.Mail.SmtpClient() \'client.timeout = 1000 \'1秒设置延迟时间 client.Host = "smtp.163.com" \'//smtp服务器地址 \'client.EnableSsl = False \'//smtp服务器是否启用SSL加密 \'client.Port = 25 \'//指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去 \'\'client.UseDefaultCredentials = True \'//SMTP服务器需要身份认证,目前基本没有不需要认证的了 client.Credentials = New System.Net.NetworkCredential("邮箱账号", "邮箱密码") \'//发件人邮箱的用户和密码(授权码,并不是发件邮箱的密码) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network \'//将smtp的出站方式设为 Network Dim message As New System.Net.Mail.MailMessage \'message.Priority = New System.Net.Mail.MailPriority.High \'//邮件的优先级,分为 Low, Normal, High,通常用 Normal即可 \'message.From = new System.Net.Mail.MailAddress("xxxxx@163.com","Kinpor.com",Encoding.GetEncoding(936)); //收件方看到的邮件来源(发信人邮件地址,发信人显示的名称,第二个参数所使用的编码) \'mailMsg.ReplyTo= new MailAddress("xxxxxx@163.com", "Kinpor.com", Encoding.GetEncoding(936)); //对方回复邮件时默认的接收地址(发信人邮件地址,发信人显示的名称,第二个参数所使用的编码) \'mailMsg.CC.Add(new MailAddress("xxxxxx@163.com", "Kinpor.com", Encoding.GetEncoding(936))); //邮件的抄送者,支持群发,多个邮件地址之间用半角逗号分开(发信人邮件地址,发信人显示的名称,第二个参数所使用的编码) \'mailMsg.To.Add(new MailAddress("xxxxxxx@qq.com", "Kinpor.com", Encoding.GetEncoding(936))); //邮件的接收者,支持群发,多个地址之间用半角逗号分开(发信人邮件地址,发信人显示的名称,第二个参数所使用的编码) \'不设置显示名称 message.From = new System.Net.Mail.MailAddress("xxxxx@163.com") \'message.To.Add("xxxxxxx@qq.com")\'主送,多个邮件地址之间用半角逗号分开 \'message.Bcc.Add("xxxxxxx@qq.com") \'密送,多个邮件地址之间用半角逗号分开 \'message.cc.Add("xxxxxxxx@qq.com") \'抄送,多个邮件地址之间用半角逗号分开 message.Subject = "这是个测试邮件!" \'//邮件标题 \'message.SubjectEncoding = System.Text.Encoding.UTF8 \'//设置标题的编码 message.IsBodyHtml = True \'; //邮件正文是否是HTML格式 \'message.BodyEncoding = System.Text.Encoding.UTF8 \'; //邮件正文的编码, 设置不正确, 接收者会收到乱码 Dim attach1 As new System.Net.Mail.Attachment( ProjectPath & "images\\签名图标.jpg", System.Net.Mime.MediaTypeNames.Image.Jpeg) \'这里设置将图片显示在邮件中 message.Attachments.Add(attach1) Dim pic1 As String = attach1.ContentId \'设置ContentId \'\'对于html邮件,可以在正常邮件中写好内容,在查看html代码,复制到这里 Dim sb As New StringBuilder sb.Append("Hello World<br>") sb.Append("<img src=""cid:"& pic1 &"""/><br>") \'将前面增加图片附件放入到邮件中直接显示,注意如果html代码中存在 " 请改成 "" sb.Append("Hello China") Dim content As String = sb.ToString \'设置正文内容\' message.Body = content \'//邮件正文 For q As Integer = 0 To 1 \'多个附件添加 Dim attachment As new System.Net.Mail.Attachment("附件地址", System.Net.Mime.MediaTypeNames.Application.Octet) \'//单个添加附件,第二个参数表示附件的文件类型,可以不用指定 attachment.name = "附件文件显示名称" attachment.nameEncoding = System.Text.Encoding.UTF8 \'//设置附件显示名称的编码 message.Attachments.Add(attachment) Next \'同步发送邮件 Try client.Send(message) \'//发送邮件,如果不返回异常则发送成功 msgbox("发送成功") Catch ex As Exception msgbox("发送失败:" & ex.message) finally message.Dispose() End Try \'异步发送邮件 \'需要在全局代码中加入以下内容,可以反馈异步发送后的通知 Public Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) \' Get the unique identifier for this asynchronous operation. Dim token As String = CStr(e.UserState) \'等于client.SendAsync(message, userState) 中userState的值 If e.Cancelled Then \'邮件发送取消反馈内容 output.show("[" & token & "] Send canceled.") End If If e.Error IsNot Nothing Then \'邮件发送失败反馈内容 output.show("[{" & token & "}] {" & e.Error.ToString() & "}" ) \'当前用的output.show,可以根据实际情况使用显示方式。 Else \'发送成功后反馈内容 output.show("Message sent.") End If End Sub \'发送邮件中的代码,将同步发送中 Try \'...... 内容 End Try \'上述这段内容替换为以下的内容: AddHandler client.SendCompleted, AddressOf SendCompletedCallback \'增加在发送电子邮件或取消操作后收到通知 Dim userState As String = "test message1" client.SendAsync(message, userState) \'不需要try判断,userState值将在全局代码中返回在e.UserState中 以下内容只有回复后才可以浏览 [此贴子已经被作者于2019/9/3 9:50:32编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/31 14:07:00 -- 多谢分享 |
-- 作者:abc2363360 -- 发布时间:2019/10/23 16:00:00 -- 看看异步 |
-- 作者:dszqiooe -- 发布时间:2019/11/21 22:07:00 -- 谢谢分享 |
-- 作者:天一生水 -- 发布时间:2019/12/24 19:14:00 -- okok |
-- 作者:teng0731 -- 发布时间:2019/12/24 19:52:00 -- 看看 |
-- 作者:dj752735228 -- 发布时间:2020/1/15 14:24:00 -- 看看 |
-- 作者:venking999 -- 发布时间:2020/1/15 15:11:00 -- 学习 |
-- 作者:肥肥记 -- 发布时间:2020/2/23 17:02:00 -- |
-- 作者:hotday1972 -- 发布时间:2020/4/23 23:00:00 -- 学习 |