Sample code for 30+ languages & platforms
PureBasic

Get the Email Received Date/Time

See more Email Object Examples

Get's the date/time from the topmost Received header. The date/time of when you received an email may be different than the date/time stored in the Date header field, which if truthful, is the date when the email was sent.

The Received header field will look something like this:

Received: from mail.example.com (mail.example.com [99.255.255.99])
 by inbound-smtp.us-west-2.amazonaws.com with SMTP id 72ma443vs1g0o6vqd8erojkpss35s0dt32h323o1
 for admin@chilkatsoft.com;
 Wed, 25 Jul 2018 08:04:23 +0000 (UTC)
The date/time is the final part delimited by a semicolon.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringTable.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkEmail.pb"

Procedure ChilkatExample()

    success.i = 0

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

    success = CkEmail::ckLoadEml(email,"qa_data/eml/p.eml")
    If success <> 1
        Debug CkEmail::ckLastErrorText(email)
        CkEmail::ckDispose(email)
        ProcedureReturn
    EndIf

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

    CkStringBuilder::ckAppend(sb,CkEmail::ckGetHeaderField(email,"Received"))

    ; Replace semicolons with CRLF's
    numReplaced.i = CkStringBuilder::ckReplace(sb,";",Chr(13) + Chr(10))

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

    CkStringTable::ckAppendFromSb(st,sb)

    If CkStringTable::ckCount(st) = 0
        Debug "Should have at least one line.."
        CkEmail::ckDispose(email)
        CkStringBuilder::ckDispose(sb)
        CkStringTable::ckDispose(st)
        ProcedureReturn
    EndIf

    ; The date/time string is the last line in the string table.
    CkStringBuilder::ckSetString(sb,CkStringTable::ckStringAt(st,CkStringTable::ckCount(st) - 1))
    CkStringBuilder::ckTrim(sb)

    Debug "Received date/time = " + CkStringBuilder::ckGetAsString(sb)


    CkEmail::ckDispose(email)
    CkStringBuilder::ckDispose(sb)
    CkStringTable::ckDispose(st)


    ProcedureReturn
EndProcedure