发送电子邮件时,您想知道它是否已成功发送给收件人。同样重要的是能够检测和管理电子邮件退回(当电子邮件无法送达时会发生这种情况)。发生这种情况的原因有多种,包括无效的电子邮件地址、邮箱已满或服务器问题。检测这些退回邮件对于维护干净且最新的电子邮件列表并确保您的邮件到达正确的人至关重要。在本文中,我们将探讨如何在 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 的更多详细信息或其他功能,您可以访问我们的文档。如果您有疑问或遇到任何困难,请访问我们的论坛。