SMTP
Simple Mail Transfer Protocol (SMTP) is a mechanism for transmitting an email. In a JavaMail API environment, your JavaMail-based program will communicate with your company or Internet Service Provider (ISP) SMTP server. The SMTP server will forward the message to the SMTP server used as the received message, and finally the user can obtain the message via the POP or IMAP protocol. Due to support authentication, it is not necessary to SMTP server is an open repeater, but you need to make sure the SMTP server configuration is correct. There is no integration in the JavaMail API to handle functions such as configuring servers to forward messages or add / delete email accounts.
POP
The meaning of POP is a post office protocol. The current version is 3, also known as POP3, which is defined in RFC 1939. POP is the mechanism for most people on the Internet to receive mail. It is supported for each mailbox of each user. This is all the work it does and is the root of most issues. When using the POP protocol, many of the features are familiar with, if you see how much new mail messages are received, POP does not support. These features are built into a mail program such as EUDORA or Microsoft Outlook, which can remember the last email received and how many new messages are calculated. Therefore, when using the JavaMail API, if you want to get such information, you will need to calculate yourself.
IMAP
IMAP is a more advanced protocol for receiving messages, which is defined in RFC 2060. The meaning of IMAP is "Internet Message Access Protocol", and the current version is 4th edition, also known as IMAP4. When using IMAP, your mail server must support this protocol. You can't just simply transform the program to support IMAP, rather than supporting POP, counting everything in IMAP. Assuming your mail server supports IMAP, JavaMail-based programs can be used to have multiple folders on the server, and these folders can be shared by multiple users.
Since the IMAP protocol has a more advanced feature, you may think that IMAP should be used by everyone, but the fact is not the case. Because IMAP will increase the load of the mail server, it requires the server to receive new messages, send messages to the requested user, and maintain these messages for each user in multiple folders. And this is a concentrated backup, so it will become bigger and bigger for a long time, and when the disk space is light, everyone will suffer. When using the POP protocol, the saved message can release the weight of the server.
Mime
The meaning of MIME is "Multi-purpose Internet Mail Expansion Agreement". It is not a mail transfer protocol. Instead, it defines the content of the transfer: the format, attachment, etc. of the message. Many documents define MIME protocols, including: RFC 822, RFC 2045, RFC 2046, and RFC 2047. As a JavaMail API, you don't need to worry about these formats. However, these formats do exist and use it for your program.
NNP and other protocols
Since the JavaMail API separates the provider and other parts, you can easily add support for additional protocols. Sun offers a list of third-party providers that use Sun's unsupported protocols that are not supported by SUN. In this list, you will see a third party provider for NNTP (Network News Transfer Protocol) [News Group], S / MIME (Safety Multi-Purpose Internet Soup Extension) and other protocols.