在.NET中使用SmtpClient
和MailMessage
classes通過本地郵件服務器(hMailServer)發送電子郵件,我當前沒有辦法獲得已發送郵件的Message-ID
標頭值。是否可以捕獲通過SmtpClient發送的電子郵件消息的「消息ID」?
背後
我試圖以編程方式跟蹤無法投遞的郵件,所以我必須找到一種方法,從拒絕某個消息目標SMTP服務器識別回覆的想法。
現在我想到了簡單地記住Message-ID
SMTP標頭值並解析傳入此郵件的郵件。
我發送郵件後試過檢查Headers
collection,但是我沒有找到任何Message-ID
。
我的問題
是否有可能讓我的SMTP服務器MailMessage
實例的發送過程中添加Message-ID
頭價值?
更新2012-05-27
按this example我已經成功地嘗試了發送前對我自己手動生成一個Message-ID
。
我所有的例子工作到目前爲止,所以它似乎這是我的問題的解決方案。
我很確定這個id是由SMTP服務器分配的,並且SMTP協議沒有指定將該值返回給客戶端。解決這個問題的方法是將相同的消息發送給您控制的帳戶,並從該消息中提取消息ID ...假設消息標識在初始SMTP服務器上生成一次。另一種可能性是在電子郵件中添加一個自定義「X-tag」。 –
謝謝,@JeremyHolovacs - 我已經嘗試添加一個自定義標籤(不是用「X-」前綴,雖然),看起來這個標籤在轉發或回覆郵件時丟失了。 –
不幸的是,根據http://stackoverflow.com/questions/7095104/how-to-confirm-that-mail-has-been-delivered-or-not沒有一個防彈的方法。 –