Using JavaMail

Once you have configured a Mail Session and targeted it to the relevant servers, a client can access it simply by performing a JNDI lookup using its JNDI name. The session then can be used to send or retrieve email according to the JavaMail API. Suppose we have created a Mail Session that is bound in the JNDI under the name oreilly.mail. The following code sample shows how to access the configured Mail Session:

import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*
// ...

InitialContext ctx = new InitialContext( );
Session session = (Session) ctx.lookup("oreilly.mail");

If you need to change any of the default values assigned to the Mail Session, you can do so by populating a Properties object with the new property values, and then using that object to create a new Mail Session by calling the getInstance( ) method on the existing Session object:

Properties props = new Properties( );

// Place any number of property overrides into props 
props.put("mail.from", emailAddress);

// Create the new session from the old
Session otherSession = session.getInstance(props);

Of course, if you are happy with the default values for the Mail Session as specified in the Administration Console, there is no need to create a new session; just look up the preconfigured session.

Once you have obtained a session with the appropriate property values, you can use it to send and receive email. The following code sample shows how to use a Mail Session to send email:

Message msg = new MimeMessage(mysession);
msg.setFrom( );
 InternetAddress.parse("", false));
msg.setSubject("Subject of Message");
msg.setSentDate(new Date( ));
msg.setText("HELLO TEST TEST");

Here, we have made sure that the Mail Session is configured with appropriate values for the properties: mail.from, mail.transport.protocol and MIME functionality can be added easily by using other parts of the standard JavaMail API.

In this next example, we look at how to retrieve mail messages from an existing POP3 account. Here, we first connect to a POP3 server, access the INBOX folder (it just so happens POP3 only supports the INBOX folder), and then list the Subject field of all email in that folder.

Store store = session.getStore( );
Folder folder = store.getDefaultFolder( );
folder = folder.getFolder("INBOX");;
Message[] messages = folder.getMessages( );
for (int i =0; i< messages.length; i++) 
 System.out.println(messages[i].getSubject( ));

There are two things that you should be aware of when using the JavaMail API:

  • You must ensure that you catch and handle exceptions appropriately. For instance, you should handle exceptions thrown as a result of a malformed email address.
  • You should avoid using the JavaMail API from within a transaction context. Connecting to mail servers can take an unpredictable amount of time, and you do not want to unnecessarily lengthen the duration of a transaction. In addition, JavaMail is not transactional, so any changes made using the JavaMail API cannot be undone if the current transaction later aborts and needs to roll back.


Web Applications

Managing the Web Server

Using JNDI and RMI



J2EE Connectors



Using EJBs

Using CMP and EJB QL

Packaging and Deployment

Managing Domains


Performance, Monitoring, and Tuning




Web Services


Logging and Internationalization


WebLogic. The Definitive Guide
WebLogic: The Definitive Guide
ISBN: 059600432X
EAN: 2147483647
Year: 2003
Pages: 187 © 2008-2020.
If you may any questions please contact us: