注意:ここで紹介しているコードを実際に使用する場合は、必ずSMTPサーバー、送信者、宛先などの設定を適切に変更してください。
開封確認をリクエストしてメールを送信するには、メールヘッダに「Disposition-Notification-To」を加えます。「Disposition-Notification-To」については、RFC3798で説明されています。
また、「X-Confirm-Reading-To」や「Return-Receipt-To」も開封確認で使用されます。
なお、これらの機能にメールの受信側が対応していない可能性がありますし、受信者が開封確認の送信を拒否する可能性もありますので、開封確認が確実に有効となる保障はありません。
以下に例を示します。
注意:SmtpClientクラスは、.NET Framework 2.0以降でしか使用できません。また、ここではSmtpClientクラスについて詳しくは説明しませんので、まずは「SmtpClientクラスを使ってメールを送信する」をご覧ください。
'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.Port = 25 sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network 'メッセージを送信する sc.Send(msg) '後始末 msg.Dispose() '後始末(.NET Framework 4.0以降) sc.Dispose()
//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.Port = 25; sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //メッセージを送信する sc.Send(msg); //後始末 msg.Dispose(); //後始末(.NET Framework 4.0以降) sc.Dispose();
補足:メールの配信通知(Delivery Status Notification)を受け取る方法は、「CC、BCC、添付ファイル、優先順位などを指定してメールを送信する」をご覧ください。
以下には簡単な例のみを示します。SmtpMailクラスを使ってメールを送信する基本的な方法は、「SMTPでメールを送信する」をご覧ください。
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)
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);