よく言及される解決策の 1 つは、画像を として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);
}
注:このソリューションでは、 of typeにが追加AlternateView
されます。完全を期すために、非 HTML メール クライアント用のプレーン テキスト バージョンのメールを含むof typeも追加する必要があります。MailMessage
text/html
AlternateView
text/plain