Sample code for 30+ languages & platforms
PureBasic

Auto-Generate or Explicitly Specify the Message-ID Email Header

Demonstrates how to auto-generate or explicitly specify the Message-ID header field.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"

Procedure ChilkatExample()

    success.i = 0

    email.i = CkEmail::ckCreate()
    If email.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkEmail::setCkSubject(email, "test")
    CkEmail::setCkBody(email, "test")
    CkEmail::ckAddTo(email,"Joe","joe@example1.com")
    CkEmail::setCkFrom(email, "mary@example2.com")

    mailman.i = CkMailMan::ckCreate()
    If mailman.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; When the mailman sends email, it renders the email to be sent,
    ; and then sends the rendered MIME.

    ; Instead of actually sending the email, this example will render
    ; to MIME so we can see what would be sent..

    ; We can explicitly set the Message-ID like this:
    CkMailMan::setCkAutoGenMessageId(mailman, 0)
    CkEmail::ckAddHeaderField(email,"Message-ID","<xyz123@abc>")

    mimeStr.s = CkMailMan::ckRenderToMime(mailman,email)
    Debug mimeStr

    ; This is what we get:

    ; MIME-Version: 1.0
    ; Date: Mon, 20 Jul 2020 17:20:09 -0500
    ; Message-ID: <xyz123@abc>
    ; Content-Type: text/plain; charset=us-ascii; format=flowed
    ; Content-Transfer-Encoding: 7bit
    ; X-Priority: 3 (Normal)
    ; Subject: test
    ; To: Joe <joe@example1.com>
    ; From: mary@example2.com
    ; 
    ; test

    Debug "--------"

    ; If we auto-generate...
    CkMailMan::setCkAutoGenMessageId(mailman, 1)
    mimeStr = CkMailMan::ckRenderToMime(mailman,email)
    Debug mimeStr

    ; We get this:

    ; MIME-Version: 1.0
    ; Date: Mon, 20 Jul 2020 17:21:20 -0500
    ; Message-ID: <04EDE096BBFE484967F6398A973B0FCF6EA09A44@CHILKATSLICE>
    ; Content-Type: text/plain; charset=us-ascii; format=flowed
    ; Content-Transfer-Encoding: 7bit
    ; X-Priority: 3 (Normal)
    ; Subject: test
    ; To: Joe <joe@example1.com>
    ; From: mary@example2.com
    ; 
    ; test


    CkEmail::ckDispose(email)
    CkMailMan::ckDispose(mailman)


    ProcedureReturn
EndProcedure