2009-08-25 33 views
39

HTMLメールを送信するにはどうすればよいですか? this answerのコードを使用してSmtpClientというメールを送信しますが、それらは常にプレーンテキストなので、下の例のメッセージのリンクはそのままではフォーマットされていません。SmtpClientを使用してC#経由でHTMLメールを送信

<p>Welcome to SiteName. To activate your account, visit this URL: <a href="http://SiteName.com/a?key=1234">http://SiteName.com/a?key=1234</a>.</p> 

私が送信する電子メールメッセージでHTMLを有効にするにはどうすればよいですか?

+1

ropstah:TBH私は混乱していましたSmtpClientにIsBodyHtmlがないというあなたのコメントの1つに書いています。ジョージアは私にMailMessageでそれを行うことを示した人です。 –

答えて

8

Mailbodyの正しいエンコーディングを適用します。

私はそれのようなものだったと思い
mail.IsBodyHtml = true; 
18

:これは私が何をすべきかです

mailObject.IsBodyHtml = true; 
+0

ropstah:TBH私は混乱していて、SmtpClientにIsBodyHtmlがないという2つのコメントの1つに書いています。ジョージアは私にMailMessageでそれを行うことを示した人です。 –

81

:私はtrueにメールメッセージのHTMLを設定

MailMessage mail = new MailMessage(from, to, subject, message); 
mail.IsBodyHtml = true; 
SmtpClient client = new SmtpClient("localhost"); 
client.Send(mail); 

注:mail.IsBodyHtml = true;

+5

'MailMessage'と' SmtpClient'の両方が 'IDisposable'を実装しているので、適切に処理する必要があることに注意してください。 – djs

1

私は考えている、あなたのプロジェクトにチェックボックスを追加することができますユーザーのためのオプションとして、htmlとして電子メールを送信し、それを有効にするには、このコードを追加します。

  MailMessage mail = new MailMessage(from, to, subject, message); 

     if(checkBox1.CheckState == CheckState.Checked) 
      { 
       mail.IsBodyHtml = true; 
      } 

     SmtpClient client = new SmtpClient("localhost"); 

     client.Send(mail); 
13

IsBodyHtml = trueは間違いなく最も重要な部分です。

しかし、あなたはtext/plainの部分と交互のように構成text/htmlの部分の両方を含む電子メールを提供する場合、それはAlternateViewクラスを使用しても可能である:

MailMessage msg = new MailMessage(); 
AlternateView plainView = AlternateView 
    .CreateAlternateViewFromString("Some plaintext", Encoding.UTF8, "text/plain"); 
// We have something to show in real old mail clients. 
msg.AlternateViews.Add(plainView); 
string htmlText = "The <b>fancy</b> part."; 
AlternateView htmlView = 
    AlternateView.CreateAlternateViewFromString(htmlText, Encoding.UTF8, "text/html"); 
msg.AlternateViews.Add(htmlView); // And a html attachment to make sure. 
msg.Body = htmlText; // But the basis is the html body 
msg.IsBodyHtml = true; // But the basis is the html body 
+0

'htmlView'の' AlternateView'は本当に必要ですか?あなたはすでにボディを 'htmlText'に設定しているからです。代替ビューとして再度設定するのは冗長ではありませんか? –

+1

必要なだけでなく、明白な代替表示の後に追加することも重要です。 http://stackoverflow.com/questions/5188605/gmail-displays-plain-text-email-instead-htmlを参照してください。 しかし、html代替ビューを追加した場合、BodyとIsBodyHtmlを指定する必要はありません。 – FunkyOne

関連する問題