Sample code for 30+ languages & platforms
DataFlex

Send Email with Multiple Reply-To Addresses

See more SMTP Examples

Send email with multiple repy-to addresses.

Note: Some mail servers will remove the extra email addresses from the Reply-To header. Even if you provide multiple reply-to addresses, the email may arrive with only the 1st.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Variant vEmail
    Handle hoEmail
    Variant vSbMime
    Handle hoSbMime
    String sReplyToAddrs
    String sTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatMailMan)) To hoMailman
    If (Not(IsComObjectCreated(hoMailman))) Begin
        Send CreateComObject of hoMailman
    End

    Set ComSmtpHost Of hoMailman To "smtp.my_mail_server.com"
    Set ComSmtpUsername Of hoMailman To "myUsername"
    Set ComSmtpPassword Of hoMailman To "myPassword"
    Set ComSmtpPort Of hoMailman To 465
    Set ComSmtpSsl Of hoMailman To True

    // Create a new email object
    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End

    Set ComSubject Of hoEmail To "This is a test"
    Set ComBody Of hoEmail To "This is a test"
    Set ComFrom Of hoEmail To "Joe <joe@example.com>"
    Get ComAddTo Of hoEmail "Mary" "mary@example2.com" To iSuccess

    // Specify a single reply-to address, which will get replace with a list of addresses..
    Set ComReplyTo Of hoEmail To "placeholder@example.com"

    // Get the email as MIME.
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbMime
    If (Not(IsComObjectCreated(hoSbMime))) Begin
        Send CreateComObject of hoSbMime
    End
    Get pvComObject of hoEmail to vEmail
    Get pvComObject of hoSbMime to vSbMime
    Get ComRenderToMimeSb Of hoMailman vEmail vSbMime To iSuccess

    // Update the Reply-To MIME header with a list of email addresses.
    Move "joe@example.com, mike@example.com" To sReplyToAddrs
    Get ComReplaceAllBetween Of hoSbMime "Reply-To: " (character(13)) + (character(10)) sReplyToAddrs False To iSuccess

    // Examine the MIME to be sent:
    Get ComGetAsString Of hoSbMime To sTemp1
    Showln sTemp1

    // Here's the MIME:

    // MIME-Version: 1.0
    // Date: Tue, 03 Sep 2024 08:18:12 -0500
    // Message-ID: <D892B0E563A7A13B1F499530DE21529714EA479A@SLICE>
    // Content-Type: text/plain; charset=us-ascii; format=flowed
    // Content-Transfer-Encoding: 7bit
    // X-Priority: 3 (Normal)
    // Subject: This is a test
    // From: Joe <joe@example.com>
    // To: Mary <mary@example2.com>
    // Reply-To: joe@example.com, mike@example.com
    // 
    // This is a test

    // ---------
    // Send the MIME...
    Get ComGetAsString Of hoSbMime To sTemp1
    Get ComSendMime Of hoMailman "joe@example.com" "mary@example2.com" sTemp1 To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComCloseSmtpConnection Of hoMailman To iSuccess
    If (iSuccess = False) Begin
        Showln "Connection to SMTP server not closed cleanly."
    End

    Showln "Mail Sent!"


End_Procedure