C# 傳送郵件內容嵌入圖片
阿新 • • 發佈:2019-01-03
我們在傳送郵件時,一般圖片都是用網路路徑,但有時如果接收方不可直接訪問外網,就不能看到圖片了,比如公司內部郵件,跟外界就沒法交流圖片。
那麼我們就來把圖片嵌入郵件中;檢視人就沒有限制了。
1。以linked的方式,此方式在郵件中不會出現圖片的附件
郵件內容呼叫圖片格式為:<img src=\"cid:Email001\">
傳送郵件的服務端程式碼為:
SmtpClient 傳送郵件的物件
摺疊C# 程式碼-
System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
- mailMessage.From="傳送者郵箱";
- mailMessage.To.Add("收件人郵件列表");
- mailMessage.CC.Add("抄送人郵件列表");
- mailMessage.Subject = subject;
- AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(content,null,"text/html");
-
LinkedResource lrImage = new LinkedResource("a.jpg"
- lrImage.ContentId = "Email001";
- htmlBody.LinkedResources.Add(lrImage);
- mailMessage.AlternateViews.Add(htmlBody);
- SmtpClient.Send(mailMessage);
例程:
摺疊C# 程式碼- SmtpClient smtp = new SmtpClient();
-
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
- smtp.Host = "smtp.163.com";
- smtp.Credentials = new NetworkCredential("renzhijie1111", "**");
- MailMessage mm = new MailMessage();
- mm.From = new MailAddress("[email protected]", "test");
- mm.To.Add("[email protected]");
- mm.Subject = "測試圖片郵件";
- string plainTextBody = "如果你郵件客戶端不支援HTML格式,或者你切換到“普通文字”檢視,將看到此內容";
- mm.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainTextBody, null, "text/plain"));
- ////HTML格式郵件的內容
- string htmlBodyContent = "如果你的看到<b>這個</b>, 說明你是在以 <span style=\"color:red\">HTML</span> 格式檢視郵件<br><br>";
- htmlBodyContent += "<a href=\"http://www.fenbi360.net粉筆程式設計網</a> <img src=\"cid:weblogo\">"; //注意此處嵌入的圖片資源
- AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(htmlBodyContent, null, "text/html");
- LinkedResource lrImage = new LinkedResource(@"d:\1.jpg", "image/gif");
- lrImage.ContentId = "weblogo"; //此處的ContentId 對應 htmlBodyContent 內容中的 cid: ,如果設定不正確,請不會顯示圖片
- htmlBody.LinkedResources.Add(lrImage);
- mm.AlternateViews.Add(htmlBody);
- ////要求回執的標誌
- mm.Headers.Add("Disposition-Notification-To", "[email protected]");
- ////自定義郵件頭
- mm.Headers.Add("X-Website", "http://www.fenbi360.net");
- ////針對 LOTUS DOMINO SERVER,插入回執頭
- mm.Headers.Add("ReturnReceipt", "1");
- mm.Priority = MailPriority.Normal; //優先順序
- mm.ReplyTo = new MailAddress("[email protected]", "我自己");
- ////如果傳送失敗,SMTP 伺服器將傳送 失敗郵件告訴我
- mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
- ////非同步傳送完成時的處理事件
- smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted);
- ////開始非同步傳送
- smtp.SendAsync(mm, null);
- void smtp_SendCompleted(object sender, AsyncCompletedEventArgs e)
- {
- if (e.Cancelled)
- {
- MessageBox.Show("傳送被取消");
- }
- else
- {
- if (e.Error == null)
- {
- MessageBox.Show("傳送成功");
- }
- else
- {
- MessageBox.Show("傳送失敗: " + e.Error.Message);
- }
- }
- }
2。以郵件附件的方式,此方式圖片當附件傳送,並會顯示在郵件內容中。
如圖:
其它程式碼就不多貼了。跟上面一樣。只是換成附件方式:
摺疊C# 程式碼- string htmlBodyContent = "如果你的看到<b>這個</b>, 說明你是在以 <span style=\"color:red\">HTML</span> 格式檢視郵件<br><br>";
- htmlBodyContent += "<a href=\"testimg\"></a> <img src=\"cid:webimg\">"; //注意此處嵌入的圖片資源
- System.Net.Mail.Attachment att = new Attachment(@"E:\ttt.gif");
- att.ContentId = "webimg";