Sample code for 30+ languages & platforms
Java

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 Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;
import com.chilkatsoft.chilkat2.Imap;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example assumes the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Imap imap = new Imap();

        // Connect to an IMAP server.
        // Use TLS
        imap.setSsl(true);
        imap.setPort(993);
        try {
            imap.connect("imap.example.com");

            // Login
            imap.login("myLogin", "myPassword");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Check the capabilities of the IMAP server.
        String cap = imap.capability();
        System.out.println("IMAP capabilities: " + cap);

        // 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

        Email email = new Email();

        // Load the email from a .eml file.
        try {
            email.loadEml("myEmail.eml");

            imap.appendMail("Inbox", email);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // 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.
        System.out.println("UID of appended email: " + imap.getAppendUid());

        // 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.
        try {
            imap.selectMailbox("Inbox");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        int uidNext = (int) imap.getUidNext();

        try {
            imap.appendMail("Inbox", email);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("The UID of the appended email SHOULD be " + uidNext);

        System.out.println("Email uploaded to Inbox!");

        // Disconnect from the IMAP server.
        imap.disconnect();
    }
}