Provides properties and methods for presenting an e-mail delivery report or receipt.
System.Object
EAGetMail.MailReport
[Visual Basic] Public Class MailReport
[C#] public class MailReport
[C++] public ref class MailReport
[JScript] public class MailReport
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Public Properties
ErrCode | Gets the error code of the failure delivery report. |
ErrDescription | Gets the error description of the failure delivery report. |
OriginalHeaders | Gets the original email's headers in the delivery report or receipt. |
OriginalMessageID | Gets the original email's MessageID in the delivery report or receipt. |
OriginalRecipient | Gets the original recipient address in the delivery report or receipt. |
OriginalSender | Gets the original sender address in the delivery report or receipt. |
OriginalSubject | Gets the original email subject in the delivery report or receipt. |
ReportMTA | Gets the server which reported the report or receipt. |
ReportType | Gets delivery type. |
Read Receipt
Delivery Receipt and FailureReport
Remarks
Example
[Visual Basic, C#, C++/CLI] The following example demonstrates how to parse the delivery report with EAGetMail POP3 & IMAP4 .NET Component. To get the full samples of EAGetMail, please refer to Samples section.
[VB - Parse Bounced Email and Read Receipt] Imports EAGetMail Public Sub ParseReport(ByVal emlFile As String) Dim oMail As New Mail("TryIt") oMail.Load(emlFile, False) If Not oMail.IsReport Then Console.WriteLine("This is not a delivery report.") Exit Sub End If Dim oReport As MailReport = oMail.GetReport() Select Case (oReport.ReportType) Case DeliveryReportType.DeliveryReceipt Console.WriteLine("This is a delivery receipt!") Case DeliveryReportType.ReadReceipt Console.WriteLine("This is a read receipt!") Case DeliveryReportType.Deleted Console.WriteLine("This is a unread receipt, this email was deleted without read!") Case DeliveryReportType.DelayedReport Console.WriteLine("This is a delayed report, server will retry to send it automatically!") Case Else Console.WriteLine("This is a failure report!") End Select Console.WriteLine("OriginalSender: {0}", oReport.OriginalSender) Console.WriteLine("OriginalRecipient: {0}", oReport.OriginalRecipient) Console.WriteLine("OriginalMessageID: {0}", oReport.OriginalMessageID) If oReport.ReportType = DeliveryReportType.FailureReport Or oReport.ReportType = DeliveryReportType.DelayedReport Then Console.WriteLine("ErrCode: {0}", oReport.ErrCode) Console.WriteLine("ErrDescription: {0}", oReport.ErrDescription) Console.WriteLine("OriginalSubject: {0}", oReport.OriginalSubject) Console.WriteLine("ReportMTA: {0}", oReport.ReportMTA) Console.WriteLine(oReport.OriginalHeaders.ToString()) End If End Sub
[C# - Parse Bounced Email and Read Receipt] using System; using System.Collections; using EAGetMail; public void Parse_Report(string emlFile) { Mail oMail = new Mail("TryIt"); oMail.Load(emlFile, false); if (!oMail.IsReport) { Console.WriteLine("This is not a delivery report."); return; } MailReport oReport = oMail.GetReport(); switch (oReport.ReportType) { case DeliveryReportType.DeliveryReceipt: Console.WriteLine("This is a delivery receipt!"); break; case DeliveryReportType.ReadReceipt: Console.WriteLine("This is a read receipt!"); break; case DeliveryReportType.Deleted: Console.WriteLine("This is a unread receipt, this email was deleted without read!"); break; case DeliveryReportType.DelayedReport: Console.WriteLine("This is a delayed report, server will retry to send it automatically!"); break; default: Console.WriteLine("This is a failure report!"); break; } Console.WriteLine("OriginalSender: {0}", oReport.OriginalSender); Console.WriteLine("OriginalRecipient: {0}", oReport.OriginalRecipient); Console.WriteLine("OriginalMessageID: {0}", oReport.OriginalMessageID); if (oReport.ReportType == DeliveryReportType.FailureReport || oReport.ReportType == DeliveryReportType.DelayedReport) { Console.WriteLine("ErrCode: {0}", oReport.ErrCode); Console.WriteLine("ErrDescription: {0}", oReport.ErrDescription); Console.WriteLine("OriginalSubject: {0}", oReport.OriginalSubject); Console.WriteLine("ReportMTA: {0}", oReport.ReportMTA); Console.WriteLine(oReport.OriginalHeaders.ToString()); } }
[C++/CLI - Parse Bounced Email and Read Receipt] #include "stdafx.h" using namespace System; using namespace System::Text; using namespace System::Collections; using namespace System::IO; using namespace EAGetMail; //add EAGetMail namespace void ParseReport(String^ emlFile) { Mail ^oMail = gcnew Mail("TryIt"); oMail->Load(emlFile, false); if (!oMail->IsReport) { Console::WriteLine("This is not a delivery report."); return; } MailReport ^oReport = oMail->GetReport(); switch (oReport->ReportType) { case DeliveryReportType::DeliveryReceipt: Console::WriteLine("This is a delivery receipt!"); break; case DeliveryReportType::ReadReceipt: Console::WriteLine("This is a read receipt!"); break; case DeliveryReportType::Deleted: Console::WriteLine("This is a unread receipt, this email was deleted without read!"); break; case DeliveryReportType::DelayedReport: Console::WriteLine("This is a delayed report, the server will retry to send it automatically!"); break; default: Console::WriteLine("This is a failure report!"); break; } Console::WriteLine("OriginalSender: {0}", oReport->OriginalSender); Console::WriteLine("OriginalRecipient: {0}", oReport->OriginalRecipient); Console::WriteLine("OriginalMessageID: {0}", oReport->OriginalMessageID); if (oReport->ReportType == DeliveryReportType::FailureReport || oReport->ReportType == DeliveryReportType::DelayedReport) { Console::WriteLine("ErrCode: {0}", oReport->ErrCode); Console::WriteLine("ErrDescription: {0}", oReport->ErrDescription); Console::WriteLine("OriginalSubject: {0}", oReport->OriginalSubject); Console::WriteLine("ReportMTA: {0}", oReport->ReportMTA); Console::WriteLine(oReport->OriginalHeaders->ToString()); } }
See Also
Mail.IsReport Property
Mail.GetReport Method
Online Tutorials
Parse Non-Delivery Report (NDS) in C# - Tutorial
Parse Non-Delivery Report (NDS) in VB.NET - Tutorial
Parse Non-Delivery Report (NDS) in C++/CLI - Tutorial