web-dev-qa-db-ja.com

MimeKit:画像を埋め込む方法は?

MailKit/MimeKit 1.2.7(最新のNuGetバージョン)を使用しています。

APIドキュメント (「BodyBuilderの使用」のセクション)のサンプルに従って、電子メールのHTML本文に画像を埋め込もうとしました。

私の現在のコードは次のようになります:

 var builder = new BodyBuilder();

 builder.HtmlBody = @"<p>Hey!</p><img src=""Image.png"">";

 var pathImage = Path.Combine(Misc.GetPathOfExecutingAssembly(), "Image.png");
 builder.LinkedResources.Add(pathLogoFile);
 message.Body = builder.ToMessageBody();

このメールを送信できますが、実際には画像メールに添付されています。しかし、それはnot埋め込まれています。

私は何かが足りないのですか?それともこれはAppleメールのせいです(これは私がメールの受信に使用しているメールクライアントです)?

私はどんなアイデアにも感謝しています(そして、このような素晴らしいツールセットを提供してくれたJeffrey Stedfastに感謝します!!)。

イングマー

17
Ingmar

次のようなものをもう少し試してください。

var builder = new BodyBuilder ();
var pathImage = Path.Combine (Misc.GetPathOfExecutingAssembly (), "Image.png");
var image = builder.LinkedResources.Add (pathLogoFile);

image.ContentId = MimeUtils.GenerateMessageId ();

builder.HtmlBody = string.Format (@"<p>Hey!</p><img src=""cid:{0}"">", image.ContentId);

message.Body = builder.ToMessageBody ();

これで問題が解決した場合は、ドキュメントを更新します。

問題は、Appleのmultipart/related実装が画像MIME部分のImage.pngヘッダーを使用してContent-Location参照を解決しないことである可能性があります(おそらく相対URLであるため)。

cid: URLタイプは機能するはずですが、各画像添付ファイルのContent-Id値を知る必要があるため、作成するのが少し厄介です。

34
jstedfast

参考までに、これは http://www.mimekit.net/docs/html/Creating-Messages.htm nowの下にあります。元の回答のリンクが壊れています。

0
FranzHuber23