Sample code for 30+ languages & platforms
DataFlex

Create a Message Disposition Notification (MDN)

See more Email Object Examples

Demonstrates the Chilkat Email.ToMdn method, which creates a new MDN (Message Disposition Notification) email in the format specified by RFC 3798, based on this email. The generated MDN is returned in the last argument, and the source email is not modified. The first argument is the human-readable message, the second is the disposition fields, and the third indicates whether to include headers only. This example builds an MDN for a received message.

Background: An MDN is the formal "read receipt" — the response returned (with the user's consent) when a message requesting a receipt is opened. Like a DSN it is a multipart/report, but it carries a message/disposition-notification part describing what happened to the message (for example, displayed). ToMdn generates that report, which pairs with the ReturnReceipt property that requests one.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoEmail
    Variant vMdn
    Handle hoMdn
    String sTemp1

    Move False To iSuccess

    //  Demonstrates the ToMdn method, which creates a new MDN (Message Disposition Notification)
    //  email (RFC 3798) based on this email.  The generated MDN 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 an MDN (read receipt) for the received message.  The 1st argument is the
    //  human-readable message, the 2nd is the disposition fields, and the 3rd (headerOnly) is false.
    Get Create (RefClass(cComChilkatEmail)) To hoMdn
    If (Not(IsComObjectCreated(hoMdn))) Begin
        Send CreateComObject of hoMdn
    End
    Get pvComObject of hoMdn to vMdn
    Get ComToMdn Of hoEmail "Your message has been displayed." "Disposition: manual-action/MDN-sent-manually; displayed" False vMdn To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoEmail To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Populate additional sender/recipient fields on the MDN before sending, then send it.
    Get ComGetMime Of hoMdn 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