Tuesday 25 October 2016

Java API For Mail



  • The JavaMail API provides a platform-independent and protocol-independent framework to build mail and messaging applications. 
  • The JavaMail API provides a set of abstract classes defining objects that comprise a mail system. It is an optional package (standard extension) for reading, composing, and sending electronic messages.


Listeners:

  • This tutorial has been prepared for the beginners to help them understand basic JavaMail programming.
  •  After completing this tutorial you will find yourself at a moderate level of expertise in JavaMail programming from where you can take yourself to next levels.

Prerequisites:

  • JavaMail programming is based on Java programming language so if you have basic understanding on Java programming then it will be a fun to learn using JavaMail in application development.
  • The JavaMail API provides a platform-independent and protocol-independent framework to build mail and messaging applications. The JavaMail API provides a set of abstract classes defining objects that comprise a mail system. It is an optional package (standard extension) for reading, composing, and sending electronic messages.
  • JavaMail provides elements that are used to construct an interface to a messaging system, including system components and interfaces. 
  • While this specification does not define any specific implementation, JavaMail does include several classes that implement RFC822 and MIME Internet messaging standards.
  • These classes are delivered as part of the JavaMail class package.
  • Following are some of the protocols supported in JavaMail API:
  • SMTP: Acronym for Simple Mail Transfer Protocol. It provides a mechanism to deliver email
  • POP: Acronym for Post Office Protocol. POP is the mechanism most people on the Internet use to get their mail. 
  • It defines support for a single mailbox for each user. RFC 1939 defines this protocol

Internet Message Access Protocol(IMAP): 

  • Acronym for Internet Message Access Protocol. It is an advanced protocol for receiving messages. 
  • It provides support for multiple mailbox for each user, in addition to, mailbox can be shared by multiple users. It is defined in RFC 2060.
  • MIME: Acronym for Multipurpose Internet Mail Extensions. 
  •  It is not a mail transfer protocol. Instead, it defines the content of what is transferred: the format of the messages, attachments, and so on. 
  • There are many different documents that take effect here: RFC 822, RFC 2045, RFC 2046, and RFC 2047. 
  • As a user of the JavaMail API, you usually don't need to worry about these formats. However, these formats do exist and are used by your programs.
  • NNTP and Others:There are many protocols that are provided by third-party providers. 
  • Some of them are Network News Transfer Protocol (NNTP), Secure Multipurpose Internet Mail Extensions (S/MIME) etc.
  • Details of these will be covered in the subsequent chapters.

Flow Chart:

As said above the java application uses JavaMail API to compose, send and receive emails.The following figure illustrates the architecture of JavaMail:
  • The abstract mechanism of JavaMail API is similar to other J2EE APIs, such as JDBC, JNDI, and JMS.
  • As seen the architecture diagram above, JavaMail API is divided into two main parts:
  • An application-independent part: An application-programming interface (API) is used by the application components to send and receive mail messages, independent of the underlying provider or protocol used.
  • A service-dependent part: A service provider interface (SPI) speaks the protocol-specific languages, such as SMTP, POP, IMAP, and Network News Transfer Protocol (NNTP). It is used to plug in a provider of an e-mail service to the J2EE platform.