HTMLメールを送信する.NET Framework 2.0以降で、SmtpClientクラスを使用する方法MailMessageクラスのIsBodyHtmlプロパティをtrueにすることにより、HTMLメールを送信することができます。 [VB.NET] 'MailMessageの作成 Dim msg As New System.Net.Mail.MailMessage("from@xxx.xxx", "to@xxx.xxx") msg.Subject = "題名" 'HTMLメールとして送信する msg.IsBodyHtml = True msg.Body = "こんにちは。<br><a href=""http://dobon.net/"">DOBON.NET</a>" Dim sc As New System.Net.Mail.SmtpClient() 'SMTPサーバーを指定する sc.Host = "localhost" 'メッセージを送信する sc.Send(msg) '後始末 msg.Dispose() [C#] //MailMessageの作成 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage( "from@xxx.xxx", "to@xxx.xxx"); msg.Subject = "題名"; //HTMLメールとして送信する msg.IsBodyHtml = true; msg.Body = "こんにちは。<br><a href=\"http://dobon.net/\">DOBON.NET</a>"; System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバーを指定する sc.Host = "localhost"; //メッセージを送信する sc.Send(msg); //後始末 msg.Dispose(); 上のようなコードで送信されるメールのデータは、次のようになります。 "multipart/alternative"としてHTMLメールを送信する「Content-Type: multipart/alternative」としてHTMLの他にプレーンテキストのデータも付加するには、MailMessageクラスのAlternateViewsプロパティに適当なAlternateViewオブジェクトを追加します。AlternateViewオブジェクトは、AlternateView.CreateAlternateViewFromStringメソッドで簡単に作成できます。 [VB.NET] 'MailMessageの作成 Dim msg As New System.Net.Mail.MailMessage("from@xxx.xxx", "to@xxx.xxx") msg.Subject = "題名" '//プレーンテキストをBodyに追加 msg.Body = "こんにちは。" + vbCrLf + "DOBON.NET" 'HTMLを追加 'Encodingにnullを指定しているため、UTF-8/Base64でエンコードされる Dim htmlView As System.Net.Mail.AlternateView = _ System.Net.Mail.AlternateView.CreateAlternateViewFromString( _ "こんにちは。<br><a href=""http://dobon.net/"">DOBON.NET</a>", _ Nothing, System.Net.Mime.MediaTypeNames.Text.Html) 'HTMLの内容がファイルに格納されている場合は、次のようにする 'Dim htmlView As New System.Net.Mail.AlternateView( _ ' "C:\hello.html", System.Net.Mime.MediaTypeNames.Text.Html) 'Base64(デフォルト)、QuotedPrintable、SevenBit、Unknownを選択できる htmlView.TransferEncoding = System.Net.Mime.TransferEncoding.Base64 '次のようにベースURLを指定できる 'htmlView.BaseUri = New Uri("http://dobon.net/") msg.AlternateViews.Add(htmlView) Dim sc As New System.Net.Mail.SmtpClient() 'SMTPサーバーを指定する sc.Host = "localhost" 'メッセージを送信する sc.Send(msg) '後始末 msg.Dispose() [C#] //MailMessageの作成 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage( "from@xxx.xxx", "to@xxx.xxx"); msg.Subject = "題名"; ////プレーンテキストをBodyに追加 msg.Body = "こんにちは。\r\nDOBON.NET"; //HTMLを追加 //Encodingにnullを指定しているため、UTF-8/Base64でエンコードされる System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString( "こんにちは。<br><a href=\"http://dobon.net/\">DOBON.NET</a>", null, System.Net.Mime.MediaTypeNames.Text.Html); //HTMLの内容がファイルに格納されている場合は、次のようにする //System.Net.Mail.AlternateView htmlView = new System.Net.Mail.AlternateView( // "C:\\hello.html", System.Net.Mime.MediaTypeNames.Text.Html); //Base64(デフォルト)、QuotedPrintable、SevenBit、Unknownを選択できる htmlView.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; //次のようにベースURLを指定できる //htmlView.BaseUri = new Uri("http://dobon.net/"); msg.AlternateViews.Add(htmlView); System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバーを指定する sc.Host = "localhost"; //メッセージを送信する sc.Send(msg); //後始末 msg.Dispose(); このコードを実行させると、次のようなメールのデータが送信されます。 上記の例では、MailMessage.Bodyにプレーンテキストを指定していますが、Bodyに何も指定せずに、HTMLと同じようにAlternateViewでプレーンテキストを追加しても同じ結果となります。 HTMLに画像を埋め込むさらに、HTMLに画像を入れてみます。AlternateView.LinkedResourcesプロパティに画像のLinkedResourceを追加します。HTMLの画像へのリンクには、LinkedResource.ContentIdで指定しているIDを使用します。 [VB.NET] 'MailMessageの作成 Dim msg As New System.Net.Mail.MailMessage("from@xxx.xxx", "to@xxx.xxx") msg.Subject = "題名" '//プレーンテキストをBodyに追加 msg.Body = "こんにちは。" + vbCrLf + "DOBON.NET" 'HTMLを追加 'Encodingにnullを指定しているため、UTF-8でエンコードされる 'ContentIdを"dbs1"とする Dim htmlView As System.Net.Mail.AlternateView = _ System.Net.Mail.AlternateView.CreateAlternateViewFromString( _ "<br><a href=""index.html""><img src=""cid:dbs1""></a>", _ Nothing, System.Net.Mime.MediaTypeNames.Text.Html) htmlView.BaseUri = New Uri("http://dobon.net/") 'HTML内の画像のLinkedResourceを作成 Dim res As New System.Net.Mail.LinkedResource("C:\dbs1.gif", "image/gif") res.ContentId = "dbs1" 'Content-Locationを指定 res.ContentLink = New Uri("http://dobon.net/banner/dbs1.gif") 'LinkedResourceを追加 htmlView.LinkedResources.Add(res) 'AlternateViewを追加 msg.AlternateViews.Add(htmlView) Dim sc As New System.Net.Mail.SmtpClient() 'SMTPサーバーを指定する sc.Host = "localhost" 'メッセージを送信する sc.Send(msg) '後始末 msg.Dispose() [C#] //MailMessageの作成 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage( "from@xxx.xxx", "to@xxx.xxx"); msg.Subject = "題名"; //プレーンテキストをBodyに追加 msg.Body = "こんにちは。\r\nDOBON.NET"; //HTMLを追加 //Encodingにnullを指定しているため、UTF-8でエンコードされる //ContentIdを"dbs1"とする System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString( "<br><a href=\"index.html\"><img src=\"cid:dbs1\"></a>", null, System.Net.Mime.MediaTypeNames.Text.Html); htmlView.BaseUri = new Uri("http://dobon.net/"); //HTML内の画像のLinkedResourceを作成 System.Net.Mail.LinkedResource res = new System.Net.Mail.LinkedResource("C:\\dbs1.gif", "image/gif"); res.ContentId = "dbs1"; //Content-Locationを指定 res.ContentLink = new Uri("http://dobon.net/banner/dbs1.gif"); //LinkedResourceを追加 htmlView.LinkedResources.Add(res); //AlternateViewを追加 msg.AlternateViews.Add(htmlView); System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバーを指定する sc.Host = "localhost"; //メッセージを送信する sc.Send(msg); //後始末 msg.Dispose(); 送信されるデータは、次のようになります。 SmtpMailクラスを使用する方法MailMessage.BodyFormatプロパティをMailFormat.Htmlとすることにより、HTMLメールを送ることができます。このように送信されたメールは、「Content-Type: multipart/alternative」となり、HTMLとプレーンテキストのデータが送信されます。プレーンテキストのデータは、自動的に作成され、付加されます。 [VB.NET] Dim mm As New System.Web.Mail.MailMessage() '本文の文字コードを指定する(ここではJIS) mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220) '送信者 mm.From = "sender@xxx.xxx" 'あて先 mm.To = "recipient1@xxx.xxx" '件名 mm.Subject = "テスト" '本文 'HTMLメールとする mm.BodyFormat = System.Web.Mail.MailFormat.Html mm.Body = "こんにちは。<br><a href=""http://dobon.net/"">DOBON.NET</a>" 'SMTPサーバーを指定する System.Web.Mail.SmtpMail.SmtpServer = "localhost" '送信する System.Web.Mail.SmtpMail.Send(mm) [C#] System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage(); //本文の文字コードを指定する(ここではJIS) mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220); //送信者 mm.From = "sender@xxx.xxx"; //あて先 mm.To = "recipient1@xxx.xxx"; //件名 mm.Subject = "テスト"; //本文 //HTMLメールとする mm.BodyFormat = System.Web.Mail.MailFormat.Html; mm.Body = "こんにちは。<br><a href=\"http://dobon.net/\">DOBON.NET</a>"; //SMTPサーバーを指定する System.Web.Mail.SmtpMail.SmtpServer = "localhost"; //送信する System.Web.Mail.SmtpMail.Send(mm); 上記のコードで送信されるメールのデータは、次のようになります。 注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|