1. 程式人生 > >C# 傳送郵件內容嵌入圖片

C# 傳送郵件內容嵌入圖片

我們在傳送郵件時,一般圖片都是用網路路徑,但有時如果接收方不可直接訪問外網,就不能看到圖片了,比如公司內部郵件,跟外界就沒法交流圖片。

那麼我們就來把圖片嵌入郵件中;檢視人就沒有限制了。

1。以linked的方式,此方式在郵件中不會出現圖片的附件

 

郵件內容呼叫圖片格式為:<img src=\"cid:Email001\">

傳送郵件的服務端程式碼為:

SmtpClient 傳送郵件的物件

摺疊C# 程式碼
  1. System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();      
  2. mailMessage.From="傳送者郵箱";      
  3. mailMessage.To.Add("收件人郵件列表");      
  4. mailMessage.CC.Add("抄送人郵件列表");      
  5. mailMessage.Subject = subject;      
  6. AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(content,null,"text/html");      
  7. LinkedResource lrImage = new LinkedResource("a.jpg"
    ,"image/gif");      
  8. lrImage.ContentId = "Email001";      
  9. htmlBody.LinkedResources.Add(lrImage);      
  10. mailMessage.AlternateViews.Add(htmlBody);      
  11. SmtpClient.Send(mailMessage);     

例程:

摺疊C# 程式碼
  1.             SmtpClient smtp = new SmtpClient();   
  2.             smtp.DeliveryMethod = SmtpDeliveryMethod.Network;   
  3.             smtp.Host = "smtp.163.com";   
  4.             smtp.Credentials = new NetworkCredential("renzhijie1111""**");   
  5.             MailMessage mm = new MailMessage();   
  6.             mm.From = new MailAddress("[email protected]""test");   
  7.             mm.To.Add("[email protected]");   
  8.             mm.Subject = "測試圖片郵件";   
  9. string plainTextBody = "如果你郵件客戶端不支援HTML格式,或者你切換到“普通文字”檢視,將看到此內容";   
  10.             mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null"text/plain"));   
  11. ////HTML格式郵件的內容 
  12. string htmlBodyContent = "如果你的看到<b>這個</b>, 說明你是在以 <span style=\"color:red\">HTML</span> 格式檢視郵件<br><br>";   
  13.             htmlBodyContent += "<a href=\"http://www.fenbi360.net粉筆程式設計網</a> <img src=\"cid:weblogo\">";   //注意此處嵌入的圖片資源   
  14.             AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null"text/html");   
  15.             LinkedResource lrImage = new LinkedResource(@"d:\1.jpg""image/gif");   
  16.             lrImage.ContentId = "weblogo"//此處的ContentId 對應 htmlBodyContent 內容中的 cid: ,如果設定不正確,請不會顯示圖片 
  17.             htmlBody.LinkedResources.Add(lrImage);   
  18.             mm.AlternateViews.Add(htmlBody);   
  19. ////要求回執的標誌 
  20.             mm.Headers.Add("Disposition-Notification-To""[email protected]");   
  21. ////自定義郵件頭 
  22.             mm.Headers.Add("X-Website""http://www.fenbi360.net");   
  23. ////針對 LOTUS DOMINO SERVER,插入回執頭 
  24.             mm.Headers.Add("ReturnReceipt""1");   
  25.             mm.Priority = MailPriority.Normal; //優先順序 
  26.             mm.ReplyTo = new MailAddress("[email protected]""我自己");   
  27. ////如果傳送失敗,SMTP 伺服器將傳送 失敗郵件告訴我 
  28.             mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;   
  29. ////非同步傳送完成時的處理事件 
  30.             smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);   
  31. ////開始非同步傳送 
  32.             smtp.SendAsync(mm, null);   
  33. void smtp_SendCompleted(object sender, AsyncCompletedEventArgs e)   
  34.         {   
  35. if (e.Cancelled)   
  36.             {   
  37.                 MessageBox.Show("傳送被取消");   
  38.             }   
  39. else
  40.             {   
  41. if (e.Error == null)   
  42.                 {   
  43.                     MessageBox.Show("傳送成功");   
  44.                 }   
  45. else
  46.                 {   
  47.                     MessageBox.Show("傳送失敗: " + e.Error.Message);   
  48.                 }   
  49.             }   
  50.         }   

2。以郵件附件的方式,此方式圖片當附件傳送,並會顯示在郵件內容中。

如圖:

其它程式碼就不多貼了。跟上面一樣。只是換成附件方式:

摺疊C# 程式碼
  1. string htmlBodyContent = "如果你的看到<b>這個</b>, 說明你是在以 <span style=\"color:red\">HTML</span> 格式檢視郵件<br><br>";      
  2. htmlBodyContent += "<a href=\"testimg\"></a> <img src=\"cid:webimg\">";   //注意此處嵌入的圖片資源    
  3. System.Net.Mail.Attachment att = new Attachment(@"E:\ttt.gif");      
  4. att.ContentId = "webimg";     
轉自:http://www.cnblogs.com/Areas/archive/2011/09/23/2186605.html 還看到一個相對簡單的程式碼:http://www.reader8.cn/jiaocheng/20130723/1587883.html