Visual FoxPro
Visual FoxPro
Transition from Email.GetDsnFinalRecipients to Email.GetDsnInfo
Provides instructions for replacing deprecated GetDsnFinalRecipients method calls with GetDsnInfo.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loEmail
LOCAL loSa
LOCAL i
LOCAL lnCount
LOCAL loJson
LOCAL lcRecipient
lnSuccess = 0
loEmail = CreateObject('Chilkat.Email')
* Load a multipart/report DSN email.
lnSuccess = loEmail.LoadEml("qa_data/eml/dsn_example.eml")
IF (lnSuccess = 0) THEN
? loEmail.LastErrorText
RELEASE loEmail
CANCEL
ENDIF
* ------------------------------------------------------------------------
* The GetDsnFinalRecipients method is deprecated:
loSa = loEmail.GetDsnFinalRecipients()
IF (loEmail.LastMethodSuccess = 0) THEN
? loEmail.LastErrorText
RELEASE loEmail
CANCEL
ENDIF
i = 0
lnCount = loSa.Count
DO WHILE i < lnCount
? STR(i) + ": " + loSa.GetString(i)
i = i + 1
ENDDO
? "----"
RELEASE loSa
* ------------------------------------------------------------------------
* Do the equivalent using GetDsnInfo.
* Your application creates a new, empty JsonObject object which is passed
* in the last argument and filled upon success.
loJson = CreateObject('Chilkat.JsonObject')
lnSuccess = loEmail.GetDsnInfo(loJson)
IF (lnSuccess = 0) THEN
? loEmail.LastErrorText
RELEASE loEmail
RELEASE loJson
CANCEL
ENDIF
loJson.EmitCompact = 0
? loJson.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
lnCount = loJson.SizeOfArray("final-recipient")
DO WHILE i < lnCount
loJson.I = i
lcRecipient = loJson.StringOf("final-recipient[i]")
? STR(i) + ": " + lcRecipient
i = i + 1
ENDDO
* -------------------------------------------------------------------------------------------
* -------------------------------------------------------------------------------------------
* 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--
*
RELEASE loEmail
RELEASE loJson