DataFlex
DataFlex
Transition from Email.GetDsnFinalRecipients to Email.GetDsnInfo
Provides instructions for replacing deprecated GetDsnFinalRecipients method calls with GetDsnInfo.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoEmail
Variant vSa
Handle hoSa
Integer i
Integer iCount
Variant vJson
Handle hoJson
String sRecipient
String sTemp1
Boolean bTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
// Load a multipart/report DSN email.
Get ComLoadEml Of hoEmail "qa_data/eml/dsn_example.eml" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
// ------------------------------------------------------------------------
// The GetDsnFinalRecipients method is deprecated:
Get ComGetDsnFinalRecipients Of hoEmail To vSa
If (IsComObject(vSa)) Begin
Get Create (RefClass(cComCkStringArray)) To hoSa
Set pvComObject Of hoSa To vSa
End
Get ComLastMethodSuccess Of hoEmail To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
Move 0 To i
Get ComCount Of hoSa To iCount
While (i < iCount)
Get ComGetString Of hoSa i To sTemp1
Showln i ": " sTemp1
Move (i + 1) To i
Loop
Showln "----"
Send Destroy of hoSa
// ------------------------------------------------------------------------
// Do the equivalent using GetDsnInfo.
// Your application creates a new, empty JsonObject object which is passed
// in the last argument and filled upon success.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get pvComObject of hoJson to vJson
Get ComGetDsnInfo Of hoEmail vJson To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
Showln "----"
// 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
Move 0 To i
Get ComSizeOfArray Of hoJson "final-recipient" To iCount
While (i < iCount)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "final-recipient[i]" To sRecipient
Showln i ": " sRecipient
Move (i + 1) To i
Loop
// -------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------
// 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--
//
End_Procedure