经常提到的一种解决方案是将图像添加为
Attachment邮件,然后使用引用在HTML邮件正文中对其进行
cid:引用。
但是,如果改用
linkedResources集合,则内嵌图像仍会很好显示,但不会显示为邮件的其他附件。 这就是我们想要发生的事情
,所以这就是我在这里所做的:
using (var client = new SmtpClient()){ MailMessage newMail = new MailMessage(); newMail.To.Add(new MailAddress("you@your.address")); newMail.Subject = "Test Subject"; newMail.IsBodyHtml = true; var inlineLogo = new linkedResource(Server.MapPath("~/Path/To/YourImage.png"), "image/png"); inlineLogo.ContentId = Guid.NewGuid().ToString(); string body = string.Format(@" <p>Lorum Ipsum Blah Blah</p> <img src=""cid:{0}"" /> <p>Lorum Ipsum Blah Blah</p> ", inlineLogo.ContentId); var view = AlternateView.CreateAlternateViewFromString(body, null, "text/html"); view.linkedResources.Add(inlineLogo); newMail.AlternateViews.Add(view); client.Send(newMail);}注意:
此解决方案
AlternateView为您
MailMessage的类型添加
text/html。为了完整起见,您还应该添加
AlternateView类型为
text/plain,其中包含用于非HTML邮件客户端的电子邮件的纯文本版本。



