Newsletter sign-up
View all newsletters

Sign up for our technology specific newsletters.

Enterprise Java
Email Address:

JavaMail quick start

Send and receive email with the JavaMail APIs

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone

Page 2 of 6

Once you have a session, create a message. In this example, you're setting the message's from and to email addresses, the subject, and the body text, all taken originally from the command line. You're also setting some header information, including the date, and you can specify cc recipients if you want.

Finally, you send the message via the javax.mail.Transport class. If you wonder how it knows about our mail session, look back at the message's constructor.

Not just plain text

The setText(...) convenience method in class javax.mail.Message (inherited from the javax.mail.Part interface) sets the message content to the supplied string and sets the MIME type to text/plain.

You're not limited to plain text, though: you can send other content types via the setDataHandler(...) method. In most cases you can take "other content types" to mean file attachments, such as Word documents, but for something a bit more interesting, check out this code for sending a Java serialized object:

ByteArrayOutputStream byteStream=new ByteArrayOutputStream();
ObjectOutputStream objectStream=new ObjectOutputStream(byteStream);
objectStream.writeObject(theObject);
msg.setDataHandler(new DataHandler( new ByteArrayDataSource( byteStream.toByteArray(), "lotontech/javaobject" )));


You won't find the DataHandler class within the javax.mail.* package structure because it belongs to the JavaBeans Activation Framework (JAF) package javax.activation. Remember, you downloaded the JAF distribution as well as JavaMail. JAF provides a mechanism for handling typed data content, which for Internet content means MIME types.

And if you really do try the code above for sending a Java object by email, you'll have trouble locating the ByteArrayDataSource class, as neither mail.jar nor activation.jar include it. Try looking in the JavaMail demo directory!

As for those file attachments that you're more likely to be interested in initially, you would create a javax.activation.FileDataSource instance in the DataHandler's constructor. Of course, you're not likely to send a file alone; rather, it will probably be an attachment to a text message. For that you need to understand the concept of multipart messages, so I'll introduce that concept now, in the context of receiving email.

Receive email via POP3

Earlier, I introduced the javax.mail.Part interface implemented by javax.mail.Message. I'll now explain its message parts, which are important in this example. To start, take a look at Figure 3.

Figure 3 shows a Message as created in the previous example that is both a message and message part, because it implements the Part interface. For any part, you can get its content (any Java object), and, in the case of a simple text message, the content object may be a String. For a multipart message, the content will be of type Multipart, from which we can get hold of the individual body parts, which themselves implement the Part interface.

Figure 3. UML diagram for the mail.Part interface



In practice, all will become apparent as you step through the code for a SimpleReceiver class, which I'll present in three sections: first, the class definition and the main(...) method that takes connection details from the command line; second, the receive(...) method that captures and steps through the incoming messages; and finally, the printMessage(...) method that prints the header information and content of each message.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comments (12)
Login
Forgot your account info?

L?n 1 ??By trungnm on October 22, 2009, 5:57 amL?n 1 ?? ???? ?? ???? ?????? ?? ?????? ??? ??? ???? ?????? ?? ?????? ?? ?????? ?? ?????? ??? ?????? ?? ?????? sod ??? ????...

Reply | Read entire comment

L?n 1 ??By trungnm on October 22, 2009, 5:56 amL?n 1 ?? ???? ?? ???? ?????? ?? ?????? ??? ??? ???? ?????? ?? ?????? ?? ?????? ?? ?????? ??? ?????? ?? ?????? sod ??? ????...

Reply | Read entire comment

L?n 1 ??By trungnm on October 22, 2009, 5:51 amL?n 1 ?? ???? ?? ???? ?????? ?? ?????? ??? ??? ???? ?????? ?? ?????? ?? ?????? ?? ?????? ??? ?????? ?? ?????? sod ??? ????...

Reply | Read entire comment

L?n 1 ??By trungnm on October 22, 2009, 5:49 amL?n 1 ?? ???? ?? ???? ?????? ?? ?????? ??? ??? ???? ?????? ?? ?????? ?? ?????? ?? ?????? ??? ?????? ?? ?????? sod ??? ????...

Reply | Read entire comment

JavaMail APIBy Anonymous on October 16, 2009, 10:47 amThank you very march! Very useful article, clear explained

Reply | Read entire comment

View all comments

Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources