PowerShell
PowerShell
Transition from Email.GetDsnFinalRecipients to Email.GetDsnInfo
Provides instructions for replacing deprecated GetDsnFinalRecipients method calls with GetDsnInfo.Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
$email = New-Object Chilkat.Email
# Load a multipart/report DSN email.
$success = $email.LoadEml("qa_data/eml/dsn_example.eml")
if ($success -eq $false) {
$($email.LastErrorText)
exit
}
# ------------------------------------------------------------------------
# The GetDsnFinalRecipients method is deprecated:
$sa = $email.GetDsnFinalRecipients()
if ($email.LastMethodSuccess -eq $false) {
$($email.LastErrorText)
exit
}
$i = 0
$count = $sa.Count
while ($i -lt $count) {
$([string]$i + ": " + $sa.GetString($i))
$i = $i + 1
}
$("----")
# ------------------------------------------------------------------------
# Do the equivalent using GetDsnInfo.
# Your application creates a new, empty JsonObject object which is passed
# in the last argument and filled upon success.
$json = New-Object Chilkat.JsonObject
$success = $email.GetDsnInfo($json)
if ($success -eq $false) {
$($email.LastErrorText)
exit
}
$json.EmitCompact = $false
$($json.Emit())
$("----")
# 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
$count = $json.SizeOfArray("final-recipient")
while ($i -lt $count) {
$json.I = $i
$recipient = $json.StringOf("final-recipient[i]")
$([string]$i + ": " + $recipient)
$i = $i + 1
}
# -------------------------------------------------------------------------------------------
# -------------------------------------------------------------------------------------------
# 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--
#