Sample code for 30+ languages & platforms
AutoIt Requires Chilkat v11.0.0+

Transition from Email.GetDsnFinalRecipients to Email.GetDsnInfo

Provides instructions for replacing deprecated GetDsnFinalRecipients method calls with GetDsnInfo.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

$oEmail = ObjCreate("Chilkat.Email")

;  Load a multipart/report DSN email.
$bSuccess = $oEmail.LoadEml("qa_data/eml/dsn_example.eml")
If ($bSuccess = False) Then
    ConsoleWrite($oEmail.LastErrorText & @CRLF)
    Exit
EndIf

;  ------------------------------------------------------------------------
;  The GetDsnFinalRecipients method is deprecated:

Local $oSa = $oEmail.GetDsnFinalRecipients()
If ($oEmail.LastMethodSuccess = False) Then
    ConsoleWrite($oEmail.LastErrorText & @CRLF)
    Exit
EndIf

Local $i = 0
Local $iCount = $oSa.Count
While $i < $iCount
    ConsoleWrite($i & ": " & $oSa.GetString($i) & @CRLF)
    $i = $i + 1
Wend
ConsoleWrite("----" & @CRLF)

;  ------------------------------------------------------------------------
;  Do the equivalent using GetDsnInfo.
;  Your application creates a new, empty JsonObject object which is passed 
;  in the last argument and filled upon success.

$oJson = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oEmail.GetDsnInfo($oJson)
If ($bSuccess = False) Then
    ConsoleWrite($oEmail.LastErrorText & @CRLF)
    Exit
EndIf

$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)
ConsoleWrite("----" & @CRLF)

;  The JSON contains the following:

;  {
;    "reporting-mta": "dns; mail.example.com",
;    "received-from-mta": "dns; smtp.example.com",
;    "arrival-date": "Fri, 8 May 2025 14:23:42 -0400",
;    "final-recipient": [
;      "rfc822; alice@example.com",
;      "rfc822; bob@example.com",
;      "rfc822; carol@example.com"
;    ],
;    "action": "failed",
;    "status": "5.1.1",
;    "remote-mta": "dns; smtp.recipientdomain.com",
;    "diagnostic-code": "smtp; 550 5.1.1 User unknown",
;    "last-attempt-date": "Fri, 8 May 2025 14:23:42 -0400",
;    "action": "failed",
;    "status": "5.1.2",
;    "remote-mta": "dns; smtp.recipientdomain.com",
;    "diagnostic-code": "smtp; 550 5.1.2 Host unknown (Domain name not found)",
;    "last-attempt-date": "Fri, 8 May 2025 14:23:42 -0400",
;    "action": "failed",
;    "status": "5.7.1",
;    "remote-mta": "dns; smtp.recipientdomain.com",
;    "diagnostic-code": "smtp; 550 5.7.1 Relay access denied",
;    "last-attempt-date": "Fri, 8 May 2025 14:23:42 -0400"
;  }

;  Iterate over the final-recipients
$i = 0
$iCount = $oJson.SizeOfArray("final-recipient")
While $i < $iCount
    $oJson.I = $i
Local $sRecipient = $oJson.StringOf("final-recipient[i]")
    ConsoleWrite($i & ": " & $sRecipient & @CRLF)

    $i = $i + 1
Wend

;  -------------------------------------------------------------------------------------------
;  -------------------------------------------------------------------------------------------
;  This is the contents of the dsn_example.eml used for this example:

;  From: postmaster@example.com
;  To: sender@example.com
;  Subject: Delivery Status Notification (Failure)
;  MIME-Version: 1.0
;  Content-Type: multipart/report; report-type=delivery-status;
;      boundary="boundary-string"
;  
;  --boundary-string
;  Content-Type: text/plain; charset=us-ascii
;  
;  This is an automatically generated Delivery Status Notification.
;  
;  Delivery to the following recipients failed permanently:
;  
;      alice@example.com
;      bob@example.com
;      carol@example.com
;  
;  Technical details of permanent failure:
;  DNS Error: Domain name not found
;  
;  --boundary-string
;  Content-Type: message/delivery-status
;  
;  Reporting-MTA: dns; mail.example.com
;  Received-From-MTA: dns; smtp.example.com
;  Arrival-Date: Fri, 8 May 2025 14:23:42 -0400
;  
;  Final-Recipient: rfc822; alice@example.com
;  Action: failed
;  Status: 5.1.1
;  Remote-MTA: dns; smtp.recipientdomain.com
;  Diagnostic-Code: smtp; 550 5.1.1 User unknown
;  Last-Attempt-Date: Fri, 8 May 2025 14:23:42 -0400
;  
;  Final-Recipient: rfc822; bob@example.com
;  Action: failed
;  Status: 5.1.2
;  Remote-MTA: dns; smtp.recipientdomain.com
;  Diagnostic-Code: smtp; 550 5.1.2 Host unknown (Domain name not found)
;  Last-Attempt-Date: Fri, 8 May 2025 14:23:42 -0400
;  
;  Final-Recipient: rfc822; carol@example.com
;  Action: failed
;  Status: 5.7.1
;  Remote-MTA: dns; smtp.recipientdomain.com
;  Diagnostic-Code: smtp; 550 5.7.1 Relay access denied
;  Last-Attempt-Date: Fri, 8 May 2025 14:23:42 -0400
;  
;  --boundary-string
;  Content-Type: message/rfc822
;  
;  Return-Path: <sender@example.com>
;  Received: from smtp.example.com (smtp.example.com [192.168.1.10])
;      by mail.example.com (Postfix) with ESMTP id 123456789
;      for <alice@example.com>, <bob@example.com>, <carol@example.com>;
;      Fri, 8 May 2025 14:23:42 -0400
;  Message-ID: <001a113d789f$ad34bc30$038e34b0$@example.com>
;  From: Sender Name <sender@example.com>
;  To: alice@example.com, bob@example.com, carol@example.com
;  Subject: Test Message
;  Date: Fri, 8 May 2025 14:20:00 -0400
;  Content-Type: text/plain; charset="us-ascii"
;  
;  This is a test email message sent to multiple recipients.
;  --boundary-string--
;