發送電子郵件時,您想知道它是否已成功發送給收件者。同樣重要的是能夠偵測和管理電子郵件退回(當電子郵件無法送達時發生)。發生這種情況的原因有很多,包括無效的電子郵件地址、郵箱已滿或伺服器問題。偵測這些退回郵件對於維護乾淨且最新的電子郵件清單並確保您的郵件到達正確的人至關重要。在本文中,我們將探討如何在 C# .NET 環境中有效處理電子郵件退回和送達通知。
用於處理電子郵件退回和送達通知的 C# .NET API
為了在 C# .NET 中有效管理電子郵件退回和送達通知,我們將使用 Aspose.Email 庫,它為電子郵件相關任務提供了一套全面的工具和功能。 Aspose.Email for .NET。您可以透過 download 取得其 DLL 或使用以下命令從 NuGet 安裝它,從而發揮 API 的潛力:
PM> Install-Package Aspose.Email
發送帶有送達通知的電子郵件
下面的程式碼片段示範如何使用 Aspose.Email 建立電子郵件並設定送達通知。此程式碼可讓您建立電子郵件、指定寄件者和收件者地址以及配置成功和失敗的傳遞通知。此外,它還向郵件添加 MIME 標頭以進行更全面的追蹤。程式碼執行以下步驟:
建立新的電子郵件訊息:程式碼首先建立一個新的 MailMessage 物件。 MailMessage 是一個類,表示可以傳送的 eml 訊息。
設定傳送通知:DeliveryNotificationOptions 設定為 OnSuccess 和 OnFailure。這表示寄件者希望在郵件成功傳遞或傳遞失敗時收到傳遞報告。
為讀取和處置通知新增 MIME 標頭:訊息物件的標頭用於新增「Read-Receipt-To」和「Disposition-Notification-To」標頭以及寄件者的電子郵件。這些標頭分別請求在收件者收到和處理電子郵件時向寄件者的電子郵件地址發出讀取和處理通知。
設定 SMTP 用戶端: SmtpClient 類別用於傳送電子郵件。此類別的實例是使用指定的主機和使用者憑證建立的。
傳送訊息:最後,以 MailMessage 物件作為參數呼叫 SmtpClient 物件的 Send 方法來傳送電子郵件。
// 建立訊息
MailMessage msg = new MailMessage();
msg.From = "sender@sender.com";
msg.To = "receiver@receiver.com";
msg.Subject = "the subject of the message";
// 設定成功和失敗訊息的傳遞通知並新增 MIME 標頭
msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess | DeliveryNotificationOptions.OnFailure;
msg.Headers.Add("Read-Receipt-To", "sender@sender.com");
msg.Headers.Add("Disposition-Notification-To", "sender@sender.com");
// 發送訊息
SmtpClient client = new SmtpClient("host", "username", "password");
client.Send(msg);
處理電子郵件退回
除了確保成功發送電子郵件之外,您還可以利用該庫的功能來處理退回郵件。下面的程式碼範例示範如何載入和檢查退回電子郵件的狀態。它會擷取並顯示有關退回電子郵件的重要訊息,例如原始郵件中的檔案名稱、退回狀態、操作、收件者、原因、狀態和收件者的電子郵件地址。程式碼執行以下步驟:
程式碼首先建立 MailMessage 類別的實例,以使用 Load 方法從指定檔案載入電子郵件。
然後,它透過呼叫 CheckBounced 方法來檢查電子郵件是否已被退回。此操作的結果儲存在 BounceResult 物件中。
然後,程式碼繼續將檔案名稱列印到控制台,透過以下屬性提供有關訊息的詳細資訊:
結果.IsBounced property represents whether the email has been bounced or not.
結果.行動 property contains the action associated with the bounce.
結果.收件人 property is indicating the recipient of the bounced email.
結果.原因 property provides the reason for the email bounce.
結果.狀態 property is representing the status of the bounce.
結果.OriginalMessage.To[0].Address property contains the email address of the recipient from the original message.
MailMessage mail = MailMessage.Load(fileName);
BounceResult result = mail.CheckBounced();
Console.WriteLine(fileName);
Console.WriteLine("IsBounced : " + result.IsBounced);
Console.WriteLine("Action : " + result.Action);
Console.WriteLine("Recipient : " + result.Recipient);
Console.WriteLine();
Console.WriteLine("Reason : " + result.Reason);
Console.WriteLine("Status : " + result.Status);
Console.WriteLine("OriginalMessage ToAddress 1: " + result.OriginalMessage.To[0].Address);
Console.WriteLine();
結論
在本文中,我們提請您注意電子郵件退回和送達通知的重要性。我們還提供了程式碼範例支援的處理方法。現在,您可以使用強大的工具來成功傳送電子郵件並管理可能發生的任何退回郵件。透過將這些實踐合併到您的專案中,您可以在 C# .NET 環境中實現有效的電子郵件通信,並確保您的訊息到達其預期收件人。
有關 Aspose.Email for .NET 的更多詳細資訊或其他功能,您可以存取我們的文件。如果您有疑問或遇到任何困難,請造訪我們的論壇。