Sample code for 30+ languages & platforms
Visual FoxPro

Upload (Append) Email to an IMAP Mailbox and get the UID of the Appended Email

Upload / append an email to an IMAP mailbox and get the UID of the appended email.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loImap
LOCAL lcCap
LOCAL loEmail
LOCAL lnUidNext

lnSuccess = 0

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

loImap = CreateObject('Chilkat.Imap')

* Connect to an IMAP server.
* Use TLS
loImap.Ssl = 1
loImap.Port = 993
lnSuccess = loImap.Connect("imap.example.com")
IF (lnSuccess <> 1) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Login
lnSuccess = loImap.Login("myLogin","myPassword")
IF (lnSuccess <> 1) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    CANCEL
ENDIF

* Check the capabilities of the IMAP server.
lcCap = loImap.Capability()
? "IMAP capabilities: " + lcCap

* If the capabilities string contains the substring "UIDPLUS", then 
* the UID of the appended email will be available in the AppendUid property (see below).

* For example, the GMail IMAP server has these capabilities (at this current time)
* * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN 
* X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT 
* APPENDLIMIT=35882577 LIST-EXTENDED LIST-STATUS

loEmail = CreateObject('Chilkat.Email')

* Load the email from a .eml file.
lnSuccess = loEmail.LoadEml("myEmail.eml")
IF (lnSuccess <> 1) THEN
    ? loEmail.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    CANCEL
ENDIF

lnSuccess = loImap.AppendMail("Inbox",loEmail)
IF (lnSuccess <> 1) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    CANCEL
ENDIF

* If the IMAP server supports the UIDPLUS extension, then the 
* imap.AppendUid will contain the UID of the appended email.
* Otherwise AppendUid will be 0.
? "UID of appended email: " + STR(loImap.AppendUid)

* If the IMAP server does NOT have UIDPLUS, then a program can 
* first select the mailbox, get the value of the UidNext property,
* and then append.  The appended email SHOULD have a UID equal to 
* the UidNext that was obtained just prior to appending (assuming no other
* program is simultaneously appending an email to the same mailbox).

* Note: It is not required to select a mailbox to append.  The select is only
* done for the purpose of obtaining the UIDNEXT value.
lnSuccess = loImap.SelectMailbox("Inbox")
IF (lnSuccess <> 1) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    CANCEL
ENDIF

lnUidNext = loImap.UidNext

lnSuccess = loImap.AppendMail("Inbox",loEmail)
IF (lnSuccess <> 1) THEN
    ? loImap.LastErrorText
    RELEASE loImap
    RELEASE loEmail
    CANCEL
ENDIF

? "The UID of the appended email SHOULD be " + STR(lnUidNext)

? "Email uploaded to Inbox!"

* Disconnect from the IMAP server.
lnSuccess = loImap.Disconnect()

RELEASE loImap
RELEASE loEmail