Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共21 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

标题:MailMessage方式同步/异步发送邮件

1楼
z769036165 发表于:2019/8/31 13:39:00
升级.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编辑过]
2楼
有点蓝 发表于:2019/8/31 14:07:00
多谢分享
3楼
abc2363360 发表于:2019/10/23 16:00:00
看看异步
4楼
dszqiooe 发表于:2019/11/21 22:07:00
谢谢分享
5楼
天一生水 发表于:2019/12/24 19:14:00
okok
6楼
teng0731 发表于:2019/12/24 19:52:00
 看看
7楼
dj752735228 发表于:2020/1/15 14:24:00
看看
8楼
venking999 发表于:2020/1/15 15:11:00
学习
9楼
肥肥记 发表于:2020/2/23 17:02:00
图片点击可在新窗口打开查看
10楼
hotday1972 发表于:2020/4/23 23:00:00
学习
共21 条记录, 每页显示 10 条, 页签: [1] [2][3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .04688 s, 3 queries.