DataFlex
DataFlex
Create a Delivery Status Notification (DSN)
See more Email Object Examples
Demonstrates the Chilkat Email.ToDsn method, which creates a new Delivery Status Notification (DSN) email in the format specified by RFC 3464, based on this email. The generated DSN is returned in the last argument, and the source email is not modified. The first argument is the human-readable explanation, the second is the delivery-status fields, and the third indicates whether to include headers only. This example builds a DSN for a received message.
Background: A DSN is the formal "bounce" a mail system returns when a message cannot be delivered. It is a
multipart/report containing a human-readable explanation plus a machine-readable message/delivery-status part (with fields like Action and Status). ToDsn generates that structured report for you — useful when building a mail server or gateway that must issue standards-compliant bounces. After generating it, populate the sender/recipient fields and send.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoEmail
Variant vDsn
Handle hoDsn
String sTemp1
Move False To iSuccess
// Demonstrates the ToDsn method, which creates a new Delivery Status Notification (DSN)
// email (RFC 3464) based on this email. The generated DSN is returned in the last argument.
// The source email is not modified.
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
Get ComLoadEml Of hoEmail "qa_data/eml/received.eml" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
// Create a DSN for the received message. The 1st argument is the human-readable
// explanation, the 2nd is the delivery-status fields, and the 3rd (headerOnly) is false.
Get Create (RefClass(cComChilkatEmail)) To hoDsn
If (Not(IsComObjectCreated(hoDsn))) Begin
Send CreateComObject of hoDsn
End
Get pvComObject of hoDsn to vDsn
Get ComToDsn Of hoEmail "The message could not be delivered to the recipient." "Action: failed; Status: 5.1.1" False vDsn To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
// Populate additional sender/recipient fields on the DSN before sending, then send it.
Get ComGetMime Of hoDsn To sTemp1
Showln sTemp1
// Note: The path "qa_data/..." is a relative local filesystem path,
// relative to the current working directory of the running application.
End_Procedure