.NET(C#):使用SmtpClient發(fā)送帶有圖片和附件的電子郵件
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
第一次使用這種方式發(fā)郵件呵呵,就比如拿我的Live郵箱往QQ郵箱上發(fā)一封郵件。 使用SmtpClient發(fā)送郵件的步驟就不講了,在網(wǎng)上你可以找到太多的資料了,這里說一些需要注意的地方: 如果郵件的內(nèi)容是HTML,設(shè)置MailMessage.IsBodyHtml為True,這樣郵件才能夠被正確以HTML形式讀取。 在HTML中引用資源使用cid:xxx,xxx是附件的ContentId屬性。同時也可以在MailMessage中的AlternateViews中加入AlternateView來指定電子郵件內(nèi)容的不同格式。通過AlternativeView的LinkedResources來加入引用文件。引用也是通過LinkedResource的ContentId來設(shè)置的。事實(shí)上這個ContentId屬性是來自AttachmentBase類型,而Attachment,AlternateView和LinkedResource類型都繼承與這個類: 另外郵件的內(nèi)容,主題,地址名稱如果包含某些非ASCII字符的話應(yīng)該指定一個編碼,因?yàn)槟J(rèn)編碼是ASCII。 最后某些SMTP服務(wù)器可能不支持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代替,因此如果編譯代碼,請先替換成有效的數(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>來自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,會拋出異常 smtp.EnableSsl = true; smtp.Credentials = new NetworkCredential("xxx@live.com", "xxx"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //發(fā)送 smtp.Send(mail); } } } } 最后在QQ郵箱中瀏覽接收到的郵件: 該文章在 2017/11/7 21:10:14 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |