我正在開發一個Asp.Net應用程序,如果他發送郵件給用戶的電子郵件地址,如果他忘記了密碼。如何檢查郵件是否已成功發送
我想檢查郵件是否已成功發送。 有什麼方法可以肯定的知道。
編輯
在情況下,如果一個電子郵件ID一點兒也不存在,那麼我會檢測到故障。
我正在開發一個Asp.Net應用程序,如果他發送郵件給用戶的電子郵件地址,如果他忘記了密碼。如何檢查郵件是否已成功發送
我想檢查郵件是否已成功發送。 有什麼方法可以肯定的知道。
編輯
在情況下,如果一個電子郵件ID一點兒也不存在,那麼我會檢測到故障。
如果您的SmtpMail.Send(message)
方法沒有返回任何錯誤,這意味着電子郵件已發送到SMTP服務器,那麼您已超出您的管轄範圍,即您可以知道多遠。
根據spec:
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<[email protected]>
S: 250 Ok
C: RCPT TO:<[email protected]>
S: 250 Ok
C: RCPT TO:<[email protected]>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <[email protected]>
C: To: Alice Example <[email protected]>
C: Cc: [email protected]
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
只要服務器說250 Ok: queued as 12345
,你可以不知道,如果它真的發送了一封電子郵件與否,或者是否被交付。
號碼電子郵件(基於SMPT)是一種不可靠的傳輸協議,雖然有一些黑客可以檢測到電子郵件已被接收和讀取,通過在電子郵件中嵌入個性化的圖像URL並跟蹤圖像已被接收方的客戶請求,沒有絕對可靠的方式來滿足您的請求。
如果發送出現問題,SmtpClient.Send方法將引發異常。但除了將該消息發送到SMTP服務器之外,無法知道它是否從目標站點到達目的地。
將.Send(msg)方法放入try catch塊中,並捕獲SmtpFailedRecipientException。
try
{
mail.Send(msg);
}
catch (SmtpFailedRecipientException ex)
{
// ex.FailedRecipient and ex.GetBaseException() should give you enough info.
}
可以使用DeliveryNotificationOptions收到收據。
如果你有一個名爲郵件MailMessage
對象,這樣做:
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
你怎麼竟跟蹤/檢查?有沒有一個工具來跟蹤smtp通信?基於Linux? – 2012-04-20 12:45:37