DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

開封確認をリクエストしてメールを送信する

開封確認をリクエストしてメールを送信するには、メールヘッダに「Disposition-Notification-To」を加えます。「Disposition-Notification-To」については、RFC3798で説明されています。

また、「X-Confirm-Reading-To」や「Return-Receipt-To」も開封確認で使用されます。

なお、これらの機能にメールの受信側が対応していない可能性がありますし、受信者が開封確認の送信を拒否する可能性もありますので、開封確認が確実に有効となる保障はありません。

以下に例を示します。

.NET Framework 2.0以降で、SmtpClientクラスを使用した例

[VB.NET]
'MailMessageの作成
Dim msg As New System.Net.Mail.MailMessage( _
    "from@xxx.xxx", "to@xxx.xxx", "題名", "本文")

'メールヘッダを追加
'開封確認をリクエストする
msg.Headers.Add("Disposition-Notification-To", msg.From.Address)

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.Headers.Add("Disposition-Notification-To", msg.From.Address);

System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient();
//SMTPサーバーを指定する
sc.Host = "localhost";
//メッセージを送信する
sc.Send(msg);

//後始末
msg.Dispose();

SmtpMailクラスを使用した例

[VB.NET]
Dim mm As New System.Web.Mail.MailMessage

'送信者
mm.From = "sender <sender@xxx.xx.com>"
'あて先
mm.To = "recipient1 <recipient1@xxx.xx.com>"
'件名
mm.Subject = "テスト"
'本文
mm.Body = "こんにちは。これはテストです。"
'本文の文字コードを指定する(ここではJIS)
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220)

'ヘッダを追加する
'開封確認をリクエストする
mm.Headers.Add("Disposition-Notification-To", "sender@xxx.xx.com")

'SMTPサーバーを指定する
System.Web.Mail.SmtpMail.SmtpServer = "(SMTPサーバーを指定する)"
'送信する
System.Web.Mail.SmtpMail.Send(mm)
[C#]
System.Web.Mail.MailMessage mm =
    new System.Web.Mail.MailMessage();

//送信者
mm.From = "sender <sender@xxx.xx.com>";
//あて先
mm.To = "recipient1 <recipient1@xxx.xx.com>";
//件名
mm.Subject = "テスト";
//本文
mm.Body = "こんにちは。これはテストです。";
//本文の文字コードを指定する(ここではJIS)
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220);

//ヘッダを追加する
'開封確認をリクエストする
mm.Headers.Add("Disposition-Notification-To", "sender@xxx.xx.com");

//SMTPサーバーを指定する
System.Web.Mail.SmtpMail.SmtpServer = "(SMTPサーバーを指定する)";
//送信する
System.Web.Mail.SmtpMail.Send(mm);

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。