Email Bounces and Delivery Notifications

When sending an email, you want to know whether it has been successfully delivered to the recipient. Equally important is the ability to detect and manage email bounces, which occur when an email cannot be delivered. They can happen for various reasons, including invalid email addresses, full mailboxes, or server issues. Detecting these bounces is vital for maintaining a clean and up-to-date email list and ensuring that your messages are reaching the right people. In this article, we will explore how to effectively handle email bounces and delivery notifications in C# .NET environment.

C# .NET API to Handle Email Bounces and Delivery Notifications

To efficiently manage email bounces and delivery notifications in C# .NET, we will be using the Aspose.Email library, which offers a comprehensive set of tools and functionalities for email-related tasks. Aspose.Email for .NET. You can use the API’s potential by either acquiring its DLL through download or installing it from NuGet using the following command:

PM> Install-Package Aspose.Email

Sending an Email with Delivery Notifications

The code snippet below demonstrates how to create an email message and set up delivery notifications using Aspose.Email. This code allows you to create an email message, specify the sender and recipient addresses, and configure delivery notifications for success and failure. Additionally, it adds MIME headers to the message for more comprehensive tracking. The code performs the following steps:

  1. Create a New Email Message: The code begins by creating a new MailMessage object. MailMessage is a class which represents an eml message that can be sent.

  2. Set Delivery Notifications: The DeliveryNotificationOptions are set to be both OnSuccess and OnFailure. This means the sender would like to receive a delivery report if the message is successfully delivered or if the delivery fails.

  3. Add MIME headers for Read and Disposition Notifications: The Headers of the message object are used to add “Read-Receipt-To” and “Disposition-Notification-To” headers with the sender’s email. These headers request read and disposition notifications to the sender’s email address upon the receipt and handling of the email by the recipient, respectively.

  4. Set Up the SMTP Client: The SmtpClient class is used to send email messages. An instance of this class is created with the specified host and user credentials.

  5. Send the Message: Finally, the Send method of the SmtpClient object is called with the MailMessage object as an argument to send the email.

Handling Email Bounces

In addition to ensuring successful email delivery, you can leverage the library’s features for handling bounces. The code sample below demonstrates how to load and check the status of a bounced email message. It retrieves and displays important information about a bounced email, such as the file name, bounce status, action, recipient, reason, status, and the email address of the recipient from the original message. The code performs the following steps:

  1. The code begins by creating an instance of the MailMessage class to load the email message from the specified file using the Load method.

  2. Then it checks if the email has been bounced by calling the CheckBounced method. The result of this operation is stored in a BounceResult object.

  3. The code then proceeds to print the fileName to the console providing the detailed information about the message through the following properties:


In this article, we drew your attention to the significance of email bounces and delivery notifications. We also provided ways of their handling supported with code samples. Now you have powerful tools at your disposal to enable successful delivery of emails and to manage any bounces that may occur. By incorporating these practices into your projects, you can achieve effective email communication in a C# .NET environment and ensure that your messages reach their intended recipients.

For more detailed information or other features of Aspose.Email for .NET you can address our documentation. In case you have questions or face any difficulties, visit our forum.

See Also