Visual FoxPro
Visual FoxPro
Fetch a Single Message's MIME into a StringBuilder
See more IMAP Examples
Demonstrates the Chilkat Imap.FetchSingleAsMimeSb method, which downloads one message's MIME into a StringBuilder. The first argument is the message id, the second (bUid) selects UID vs sequence number, and the third is the StringBuilder, which is cleared first. This example downloads a message by UID and prints the MIME length.
Background: Chilkat interprets the received MIME as UTF-8. Messages using Base64 or quoted-printable transfer encoding are safe because their encoded bytes are ASCII. Raw
8bit or binary content, or unencoded text in a charset such as ISO-8859-1 or Shift_JIS, can be misinterpreted — in those cases use FetchSingleBd to get the exact bytes.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loImap
LOCAL lnWantUids
LOCAL loMsgSet
LOCAL lnUid
LOCAL lnUseUid
LOCAL loSbMime
lnSuccess = 0
* Demonstrates the Imap.FetchSingleAsMimeSb method, which downloads one message's MIME into a
* StringBuilder. The 1st argument is the message id, the 2nd (bUid) selects UID vs sequence
* number, and the 3rd is the StringBuilder (cleared first).
loImap = CreateObject('Chilkat.Imap')
loImap.Ssl = 1
loImap.Port = 993
lnSuccess = loImap.Connect("imap.example.com")
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
CANCEL
ENDIF
lnSuccess = loImap.Login("user@example.com","myPassword")
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
CANCEL
ENDIF
lnSuccess = loImap.SelectMailbox("Inbox")
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
CANCEL
ENDIF
* Search for the message ids to download, returning UIDs.
lnWantUids = 1
loMsgSet = CreateObject('Chilkat.MessageSet')
lnSuccess = loImap.QueryMbx("ALL",lnWantUids,loMsgSet)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMsgSet
CANCEL
ENDIF
IF (loMsgSet.Count > 0) THEN
lnUid = loMsgSet.GetId(0)
* Download the message's MIME into a StringBuilder. The id is a UID.
lnUseUid = 1
loSbMime = CreateObject('Chilkat.StringBuilder')
lnSuccess = loImap.FetchSingleAsMimeSb(lnUid,lnUseUid,loSbMime)
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMsgSet
RELEASE loSbMime
CANCEL
ENDIF
? "MIME length: " + STR(loSbMime.Length) + " chars"
ENDIF
lnSuccess = loImap.Disconnect()
IF (lnSuccess = 0) THEN
? loImap.LastErrorText
RELEASE loImap
RELEASE loMsgSet
RELEASE loSbMime
CANCEL
ENDIF
RELEASE loImap
RELEASE loMsgSet
RELEASE loSbMime