Sample code for 30+ languages & platforms
PureBasic

Count the Attached Messages in an Email

See more Email Object Examples

Demonstrates the read-only Chilkat Email.NumAttachedMessages property, which is the number of embedded emails represented by message/rfc822 MIME parts. These are counted separately from ordinary attachments and related items, and their indexes are zero-based. This example builds an inner email, attaches it to an outer email as a nested message, and prints the count.

Background: When you "forward as attachment," many mail clients embed the original message as a complete nested email rather than quoting its text. In MIME this appears as a message/rfc822 part — an entire email (its own headers and body) tucked inside the carrier message. Chilkat distinguishes three kinds of enclosed content: ordinary attachments (NumAttachments), inline related items (NumRelatedItems), and these nested messages (NumAttachedMessages). Use GetAttachedEmail to pull an embedded message into its own Email object.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkEmail.pb"

Procedure ChilkatExample()

    success.i = 0

    ;  Demonstrates the read-only Email.NumAttachedMessages property, which is the
    ;  number of embedded emails (message/rfc822 MIME parts) contained in the email.

    ;  Create an inner email that we'll attach as a complete nested message.
    innerEmail.i = CkEmail::ckCreate()
    If innerEmail.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkEmail::setCkSubject(innerEmail, "I am an attached message")
    CkEmail::setCkBody(innerEmail, "This entire email is nested inside another email.")
    CkEmail::setCkFrom(innerEmail, "alice@example.com")
    CkEmail::ckAddTo(innerEmail,"Bob","bob@example.com")

    ;  Create the outer email and attach the inner email directly as a
    ;  message/rfc822 part.  AttachEmail attaches a copy of the inner email.
    email.i = CkEmail::ckCreate()
    If email.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkEmail::setCkSubject(email, "Outer email with an attached message")
    CkEmail::setCkBody(email, "See the attached email.")
    success = CkEmail::ckAttachEmail(email,innerEmail)

    Debug "NumAttachedMessages = " + Str(CkEmail::ckNumAttachedMessages(email))



    CkEmail::ckDispose(innerEmail)
    CkEmail::ckDispose(email)


    ProcedureReturn
EndProcedure