.NET(C#):使用SmtpClient发送带有图片和附件的电子邮件
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
第一次使用这种方式发邮件呵呵,就比如拿我的Live邮箱往QQ邮箱上发一封邮件。 使用SmtpClient发送邮件的步骤就不讲了,在网上你可以找到太多的资料了,这里说一些需要注意的地方: 如果邮件的内容是HTML,设置MailMessage.IsBodyHtml为True,这样邮件才能够被正确以HTML形式读取。 在HTML中引用资源使用cid:xxx,xxx是附件的ContentId属性。同时也可以在MailMessage中的AlternateViews中加入AlternateView来指定电子邮件内容的不同格式。通过AlternativeView的LinkedResources来加入引用文件。引用也是通过LinkedResource的ContentId来设置的。事实上这个ContentId属性是来自AttachmentBase类型,而Attachment,AlternateView和LinkedResource类型都继承与这个类: 另外邮件的内容,主题,地址名称如果包含某些非ASCII字符的话应该指定一个编码,因为默认编码是ASCII。 最后某些SMTP服务器可能不支持SSL传输,因此SmtpClient的EnableSsl只能为false(否则会有异常抛出)。 代码: using System; using System.Text; using System.Net; using System.Net.Mime; using System.Net.Mail; namespace Mgen { class Program { static void Main() { //代码中的某些信息(如邮箱和密码)已用xxx代替,因此如果编译代码,请先替换成有效的数据! using (var smtp = new SmtpClient()) using (var mail = new MailMessage("xxx@live.com", "xxx@qq.com")) { //图像附件 var attach = new Attachment(@"D:\a.jpg", MediaTypeNames.Image.Jpeg); //设置ContentId attach.ContentId = "pic"; //ZIP附件 var attach2 = new Attachment(@"D:\b.zip", "application/x-zip-compressed"); mail.Attachments.Add(attach); mail.Attachments.Add(attach2); //标题和内容,注意设置编码,因为默认编码是ASCII mail.Subject = "你好"; mail.SubjectEncoding = Encoding.UTF8; //HTML内容 mail.Body = "<img src=\"cid:pic\"/><p>来自Mgen。</p>"; mail.BodyEncoding = Encoding.UTF8; //指示改电子邮件内容是HTML格式 mail.IsBodyHtml = true; //SMTP设置(根据邮箱类型设置,这里是Live Mail的SMTP服务器地址) smtp.Host = "smtp.live.com"; smtp.UseDefaultCredentials = false; //某些SMTP服务器可能不支持SSL,会抛出异常 smtp.EnableSsl = true; smtp.Credentials = new NetworkCredential("xxx@live.com", "xxx"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //发送 smtp.Send(mail); } } } } 最后在QQ邮箱中浏览接收到的邮件: 该文章在 2017/11/7 21:10:14 编辑过 |
关键字查询
相关文章
正在查询... |