39

SmtpClient() を使用すると、メールに添付ファイルを追加できますが、添付ファイルではなく、メールを開いたときに画像を表示したい場合はどうすればよいでしょうか?

私が覚えているように、それは約 4 行のコードで実行できますが、方法を覚えておらず、MSDN サイトでも見つけることができません。

編集:私はウェブサイトなどを使用していません。IPアドレスも使用していません。イメージはハードドライブにあります。送信されると、それらはメールの一部になるはずです。だから、タグを使いたいと思うかもしれません...しかし、私のコンピュータはブロードキャストしていないので、よくわかりません.

4

6 に答える 6

86

よく言及される解決策の 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も追加する必要があります。MailMessagetext/htmlAlternateViewtext/plain

于 2012-06-12T16:37:15.330 に答える
13

4行のコードと言うとき、これを指していますか?

System.Net.Mail.Attachment inline = new System.Net.Mail.Attachment(@"imagepath\filename.png");
inline.ContentDisposition.Inline = true;
于 2009-07-31T14:33:08.533 に答える
13

HTML メールと画像は添付ファイルであるため、コンテンツ ID で画像を参照する場合にすぎません。つまり、

    Dim A As System.Net.Mail.Attachment = New System.Net.Mail.Attachment(txtImagePath.Text)
    Dim RGen As Random = New Random()
    A.ContentId = RGen.Next(100000, 9999999).ToString()
    EM.Body = "<img src='cid:" + A.ContentId +"'>" 

ここに包括的な例があるようです:インライン画像を含む電子メールを送信

于 2009-07-31T14:31:55.633 に答える
2

画像を Base64 文字列に変換するのはどうですか? 私の知る限り、これはメール本文に簡単に埋め込むことができます。

ここを見てください。

于 2009-07-31T14:31:39.037 に答える
-2

メールが開かれたときにクライアントに画像を表示させるプロセスは、クライアントの機能です。クライアントが画像のレンダリング方法を知っていて、画像コンテンツをブロックしていない限り、すぐに開きます。画像の MIME 添付ファイル タイプを正しく指定している限り、電子メールをクライアントで開くために電子メールを送信する際に特別なことをする必要はありません。

于 2009-07-31T14:31:42.140 に答える