最初にやるべきことはドキュメントの例のようなサブクラスSmtpClientです:
http://www.mimekit.net/docs/html/M_MailKit_Net_Smtp_SmtpClient_GetDeliveryStatusNotifications.htm
public class DSNSmtpClient : SmtpClient
{
public DSNSmtpClient()
{
}
/// <summary>
/// Get the envelope identifier to be used with delivery status notifications.
/// </summary>
/// <remarks>
/// <para>The envelope identifier, if non-empty, is useful in determining which message
/// a delivery status notification was issued for.</para>
/// <para>The envelope identifier should be unique and may be up to 100 characters in
/// length, but must consist only of printable ASCII characters and no white space.</para>
/// <para>For more information, see rfc3461, section 4.4.</para>
/// </remarks>
/// <returns>The envelope identifier.</returns>
/// <param name="message">The message.</param>
protected override string GetEnvelopeId (MimeMessage message)
{
// Since you will want to be able to map whatever identifier you return here to the
// message, the obvious identifier to use is probably the Message-Id value.
return message.MessageId;
}
/// <summary>
/// Get the types of delivery status notification desired for the specified recipient mailbox.
/// </summary>
/// <remarks>
/// Gets the types of delivery status notification desired for the specified recipient mailbox.
/// </remarks>
/// <returns>The desired delivery status notification type.</returns>
/// <param name="message">The message being sent.</param>
/// <param name="mailbox">The mailbox.</param>
protected override DeliveryStatusNotification? GetDeliveryStatusNotifications (MimeMessage message, MailboxAddress mailbox)
{
// In this example, we only want to be notified of failures to deliver to a mailbox.
// If you also want to be notified of delays or successful deliveries, simply bitwise-or
// whatever combination of flags you want to be notified about.
return DeliveryStatusNotification.Failure;
}
}
これはあなたに、各メッセージの配信状況に関する電子メールを送信するSMTPサーバーを教えてくれますあなたが送るもの。
これらのメッセージの最上位MIMEタイプはmultipart/report
で、report-type
の値はdelivery-status
です。言い換えれば
、Content-Type
ヘッダは次のようになります。
Content-Type: multipart/report; report-type=delivery-status; boundary=ajkfhkzfhkjhkjadskhz
あなたはMimeMessage.Load()
とのメッセージを解析するとBody
が期待ReportType
プロパティ値を持つMultipartReport
であれば、あなたは確認することができます。
そこから、タイプMessageDeliveryStatus
(通常は2番目の部分です)の子パーツを見つけることができます。
そこからStatusGroups
プロパティ(http://www.mimekit.net/docs/html/P_MimeKit_MessageDeliveryStatus_StatusGroups.htmを参照)をチェックします。コレクション内の各HeaderList
には、別の受信者に関する情報があります。
StatusGroupsドキュメントに記載されているRFCを読んで、必要なヘッダーと値を調べる必要があります。
メールIDのようなバウンスメールを処理する方法はありますか?バウンスメールをチェックしたい –
はい。その情報はヘッダーに表示されます。詳細はetcなどをお読みください。 – jstedfast
私の答えをupvoteして受け入れることができますか?ありがとう! – jstedfast