Gets the original email headers in the delivery report or receipt.
[Visual Basic 6.0] Public Property Get OriginalHeaders() As HeaderCollection
[Visual C++] public: get_OriginalHeaders(IHeaderCollection** 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