.NET(C#):使用SmtpClient发送带有图片和附件的电子邮件
第一次使用這種方式發(fā)郵件呵呵,就比如拿我的Live郵箱往QQ郵箱上發(fā)一封郵件。
使用SmtpClient發(fā)送郵件的步驟就不講了,在網(wǎng)上你可以找到太多的資料了,這里說(shuō)一些需要注意的地方:
如果郵件的內(nèi)容是HTML,設(shè)置MailMessage.IsBodyHtml為T(mén)rue,這樣郵件才能夠被正確以HTML形式讀取。
在HTML中引用資源使用cid:xxx,xxx是附件的ContentId屬性。同時(shí)也可以在MailMessage中的AlternateViews中加入AlternateView來(lái)指定電子郵件內(nèi)容的不同格式。通過(guò)AlternativeView的LinkedResources來(lái)加入引用文件。引用也是通過(guò)LinkedResource的ContentId來(lái)設(shè)置的。事實(shí)上這個(gè)ContentId屬性是來(lái)自AttachmentBase類型,而Attachment,AlternateView和LinkedResource類型都繼承與這個(gè)類:
另外郵件的內(nèi)容,主題,地址名稱如果包含某些非ASCII字符的話應(yīng)該指定一個(gè)編碼,因?yàn)槟J(rèn)編碼是ASCII。
最后某些SMTP服務(wù)器可能不支持SSL傳輸,因此SmtpClient的EnableSsl只能為false(否則會(huì)有異常拋出)。
代碼:
using System;
using System.Text;
using System.Net;
using System.Net.Mime;
using System.Net.Mail;
namespace Mgen
{
class Program
{
static void Main()
{
//代碼中的某些信息(如郵箱和密碼)已用xxx代替,因此如果編譯代碼,請(qǐng)先替換成有效的數(shù)據(jù)!
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);
//設(shè)置ContentId
attach.ContentId = "pic";
//ZIP附件
var attach2 = new Attachment(@"D:\b.zip", "application/x-zip-compressed");
mail.Attachments.Add(attach);
mail.Attachments.Add(attach2);
//標(biāo)題和內(nèi)容,注意設(shè)置編碼,因?yàn)槟J(rèn)編碼是ASCII
mail.Subject = "你好";
mail.SubjectEncoding = Encoding.UTF8;
//HTML內(nèi)容
mail.Body = "<img src=\"cid:pic\"/><p>來(lái)自Mgen。</p>";
mail.BodyEncoding = Encoding.UTF8;
//指示改電子郵件內(nèi)容是HTML格式
mail.IsBodyHtml = true;
//SMTP設(shè)置(根據(jù)郵箱類型設(shè)置,這里是Live Mail的SMTP服務(wù)器地址)
smtp.Host = "smtp.live.com";
smtp.UseDefaultCredentials = false;
//某些SMTP服務(wù)器可能不支持SSL,會(huì)拋出異常
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("xxx@live.com", "xxx");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//發(fā)送
smtp.Send(mail);
}
}
}
}
最后在QQ郵箱中瀏覽接收到的郵件:
?
總結(jié)
以上是生活随笔為你收集整理的.NET(C#):使用SmtpClient发送带有图片和附件的电子邮件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【ffmpeg for wince】音视
- 下一篇: C++调用Asprise OCR识别图片