web-dev-qa-db-ja.com

MailMessage c#-HTMLにして画像を追加する方法など

string to = "[email protected]";
 string body = "Test";
 SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
 MailMessage mailObj = new MailMessage(urEmail, to, subject, body);
 SMTPServer.Send(mailObj);

これは、現在テストメールを送信している方法です。このhtmlを作成して、画像などを追加することにより、送信される電子メールの見栄えを良くするにはどうすればよいですか?

ありがとう

22
Beginner

MailMessageで、プロパティIsBodyHtmlをtrueに設定します。

string to = "[email protected]";
string body = "Test";
SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
MailMessage mailObj = new MailMessage(urEmail, to, subject, body);

mailObj.IsBodyHtml = true; // This line

SMTPServer.Send(mailObj);
46
swapneel

次のアイデアを使用して、ASPXページを取得して文字列にレンダリングできます。

StringWriter writer = new StringWriter();
Server.Execute("Login.aspx", writer);
string html = writer.ToString();

次にMailMessage.IsBodyHtmlをtrueに設定すると、HTMLメッセージを送信できます。画像やその他のものを使用したい場合は、メールの受信者がそれらの画像にアクセスできることを確認してください。

2
Wouter de Kort

これには2つの方法があります。

  1. メール内に画像を埋め込みます。 ( この質問 を参照)

  2. HTMLメール内の画像タグのsrc属性を介して画像にリンクします。これには、受信者がアクセスできるWebサーバー上のどこかに画像ファイルをホストする必要があります。

どちらの場合も、HTMLの本文でメールを送信する必要があります。

mailObj.IsBodyHtml = true;
1
Martijn B

メールへの画像の追加に関する質問で、埋め込みを要求する場合は、HTMLのアンカータグを使用するか、mailObj.Attachments.Add()メソッドを使用して画像ファイルをメールに添付できます。

ただし、一部のファイアウォールは埋め込まれた画像をブロックするだけで添付ファイルを許可するため、最良の方法は添付ファイルとして画像を送信することです。そうすれば、完璧な方法ではありませんが、コンテンツをより安全に配信できます。

0
Zenwalker