Gets the error code of the failure delivery report.
[Visual Basic 6.0] Public Property Get ErrCode() As String
[Visual C++] public: get_ErrCode(BSTR* pVal);
Property Value
Read Receipt
Delivery Receipt and FailureReport
Remarks
Example
[Visual Basic 6.0, Visual C++, Delphi] The following example demonstrates how to parse the delivery report with EAGetMail POP3 & IMAP4 ActiveX Object. To get the full samples of EAGetMail, please refer to Samples section.
[Visual Basic 6.0]
Private Sub ParseReport(ByVal emlFile As String)
Const FailureReport = 0
Const DeliveryReceipt = 1
Const ReadReceipt = 2
Const Receipt_Deleted = 3
Const DelayedReport = 4
Dim oMail As New EAGetMailObjLib.Mail
oMail.LicenseCode = "TryIt"
oMail.LoadFile emlFile, False
If Not oMail.IsReport Then
MsgBox "this is not a report"
Exit Sub
End If
Dim oReport As EAGetMailObjLib.MailReport
Set oReport = oMail.GetReport()
// Get report type
Select Case oReport.ReportType
Case DeliveryReceipt
MsgBox "This is a deliver receipt"
Case ReadReceipt
MsgBox "This is a read receipt"
Case Receipt_Deleted
MsgBox "This is a unread receipt, this email was deleted without read!"
Case DelayedReport
MsgBox "This is a delayed report, this email will be tried later by server automatically!"
Case Else
MsgBox "This is a failure report"
End Select
// Get original message information
MsgBox oReport.OriginalSender
MsgBox oReport.OriginalRecipient
MsgBox oReport.OriginalMessageID
If oReport.ReportType = FailureReport Or oReport.ReportType = DelayedReport Then
MsgBox oReport.ErrCode
MsgBox oReport.ErrDescription
MsgBox oReport.OriginalSubject
MsgBox oReport.ReportMTA
Dim oHeaders As EAGetMailObjLib.HeaderCollection
Set oHeaders = oReport.OriginalHeaders
Dim i, nCount As Integer
nCount = oHeaders.Count
For i = 0 To nCount - 1
Dim oHeader As EAGetMailObjLib.HeaderItem
Set oHeader = oHeaders.Item(i)
MsgBox oHeader.HeaderKey & ": " & oHeader.HeaderValue
Next
End If
End Sub
[VBScript]
Sub ParseReport(emlFile)
Const FailureReport = 0
Const DeliveryReceipt = 1
Const ReadReceipt = 2
Const Receipt_Deleted = 3
Const DelayedReport = 4
Dim oMail
Set oMail = CreateObject("EAGetMailObj.Mail")
oMail.LicenseCode = "TryIt"
oMail.LoadFile emlFile, False
If Not oMail.IsReport Then
MsgBox "this is not a report"
Exit Sub
End If
Dim oReport
Set oReport = oMail.GetReport()
//get report type
Select Case oReport.ReportType
Case DeliveryReceipt
MsgBox "This is a deliver receipt"
Case ReadReceipt
MsgBox "This is a read receipt"
Case Receipt_Deleted
MsgBox "This is a unread receipt, this email was deleted without read!"
Case DelayedReport
MsgBox "This is a delayed report, this email will be tried later by server automatically!"
Case Else
MsgBox "This is a failure report"
End Select
//get original message information
MsgBox oReport.OriginalSender
MsgBox oReport.OriginalRecipient
MsgBox oReport.OriginalMessageID
If oReport.ReportType = FailureReport Or oReport.ReportType = DelayedReport Then
MsgBox oReport.ErrCode
MsgBox oReport.ErrDescription
MsgBox oReport.OriginalSubject
MsgBox oReport.ReportMTA
Dim oHeaders
Set oHeaders = oReport.OriginalHeaders
Dim i, nCount As Integer
nCount = oHeaders.Count
For i = 0 To nCount - 1
Dim oHeader
Set oHeader = oHeaders.Item(i)
MsgBox oHeader.HeaderKey & ": " & oHeader.HeaderValue
Next
End If
End Sub
[Visual C++]
#include "stdafx.h"
#include <windows.h>
#include "eagetmailobj.tlh"
using namespace EAGetMailObjLib;
void ParseReport(LPCTSTR lpszEmlFile)
{
const int FailureReport = 0;
const int DeliveryReceipt = 1;
const int ReadReceipt = 2;
const int Receipt_Deleted = 3;
const int DelayedReport = 4;
IMailPtr oMail;
oMail.CreateInstance(__uuidof(EAGetMailObjLib::Mail));
oMail->LicenseCode = _T("TryIt");
oMail->LoadFile(lpszEmlFile, VARIANT_FALSE);
if(oMail->IsReport == VARIANT_FALSE)
{
_tprintf(_T("This is not a report"));
return;
}
// get report type
IMailReportPtr oReport = oMail->GetReport();
switch(oReport->ReportType)
{
case DeliveryReceipt:
_tprintf(_T("This is a delivery receipt\r\n"));
break;
case ReadReceipt:
_tprintf(_T("This is a read receipt\r\n"));
break;
case Receipt_Deleted:
_tprintf(_T("This is a unread receipt, this email was deleted without read!\r\n"));
break;
case DelayedReport:
_tprintf(_T("This is a delayed report, this email will be tried later by server automatically!\r\n"));
break;
default:
_tprintf(_T("This is a failure delivery report\r\n"));
break;
}
// get original message information
_tprintf(_T("OriginalSender: %s\r\n"), (TCHAR*)oReport->OriginalSender);
_tprintf(_T("OriginalRecipient: %s\r\n"), (TCHAR*)oReport->OriginalRecipient);
_tprintf(_T("OriginalMessageID: %s\r\n"),(TCHAR*)oReport->OriginalMessageID);
if(oReport->ReportType == FailureReport || oReport->ReportType == DelayedReport)
{
_tprintf(_T("ErrCode: %s\r\n"), (const TCHAR*)oReport->ErrCode);
_tprintf(_T("ErrDescription: %s\r\n"), (const TCHAR*)oReport->ErrDescription);
_tprintf(_T("OriginalSubject: %s\r\n"), (const TCHAR*)oReport->OriginalSubject);
_tprintf(_T("ReportMTA: %s\r\n"), (const TCHAR*)oReport->ReportMTA);
IHeaderCollectionPtr oHeaders;
oHeaders = oReport->OriginalHeaders;
int count = oHeaders->Count;
for(int i = 0; i < count; i++)
{
IHeaderItemPtr oHeader;
oHeader = oHeaders->Item(i);
::_tprintf(_T("%s: %s\r\n"),
(TCHAR*)oHeader->HeaderKey, (TCHAR*)oHeader->HeaderValue);
}
}
}
[Delphi]
const
// Report Type
FailureReport = 0;
DeliveryReceipt = 1;
ReadReceipt = 2;
Receipt_Deleted = 3;
DelayedReport = 4;
procedure ParseReport(fileName: WideString);
var
oMail: TMail;
oReport: IMailReport;
oHeaders: IHeaderCollection;
i: Integer;
begin
oMail := TMail.Create(Application);
oMail.LicenseCode := 'TryIt';
oMail.LoadFile(fileName, false);
if not oMail.IsReport then
begin
ShowMessage('This is not a report!');
exit;
end;
oReport := oMail.GetReport();
if oReport.ReportType = DeliveryReceipt then
ShowMessage('This is a deliver receipt!')
else if oReport.ReportType = ReadReceipt Then
ShowMessage('This is a read receipt!')
else if oReport.ReportType = Receipt_Deleted then
ShowMessage('This is a unread receipt, this email was deleted without read!')
else if oReport.ReportType = DelayedReport then
ShowMessage('This is a delayed report, this email will be tried later!')
else
ShowMessage('This is a failure report!');
// Get original message information
ShowMessage(oReport.OriginalSender);
ShowMessage(oReport.OriginalRecipient);
ShowMessage(oReport.OriginalMessageID);
if (oReport.ReportType = FailureReport) or (oReport.ReportType = DelayedReport) then
begin
ShowMessage(oReport.ErrCode);
ShowMessage(oReport.ErrDescription);
ShowMessage(oReport.OriginalSubject);
ShowMessage(oReport.ReportMTA);
oHeaders := oReport.OriginalHeaders;
// Parse original email headers.
for i := 0 to oHeaders.Count - 1 do
begin
ShowMessage(oHeaders.Item(i).HeaderKey + ':' +
oHeaders.Item(i).HeaderValue);
end;
end;
end;
See Also
Online Tutorials
Parse Non-Delivery Report (NDS) in VB6 - Tutorial
Parse Non-Delivery Report (NDS) in Delphi - Tutorial
Parse Non-Delivery Report (NDS) in VC++ - Tutorial