Introducing JavaMail

The JavaMail API defines classes such as Message, Store, and Transport. The API can be
extended and can be subclassed to provide new protocols and to add
functionality when necessary. In addition, the API provides concrete
subclasses of the abstract classes. These subclasses, including MimeMessage and MimeBodyPart, implement
widely used Internet mail protocols and conform to the RFC822 and
RFC2045 specifications. The JavaMail API includes support for the IMAP4, POP3, and SMTP protocols.

The JavaMail architectural components are as follows:

The abstract layer declares classes,
interfaces, and abstract methods intended to support mail handling
functions that all mail systems support.

The internet implementation layer implements
part of the abstract layer using the RFC822 and MIME internet standards.

JavaMail uses the JavaBeans Activation Framework (JAF) to encapsulate message data and to handle commands
intended to interact with that data.