Using the JavaMail API, a code segment can be embedded in any Java 2 Enterprise Edition (J2EE) application component, such as an EJB or a servlet, allowing the application to send a message and save a copy of the mail to the Sent folder.The following is a code sample that you would embed in a J2EE application:
javax.naming.InitialContext ctx = new javax.naming.InitialContext(); javax.mail.Session mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3"); MimeMessage msg = new MimeMessage(mail_session); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("bob@coldmail.net")); msg.setFrom(new InternetAddress("alice@mail.eedge.com")); msg.setSubject("Important message from eEdge.com"); msg.setText(msg_text); Transport.send(msg); Store store = mail_session.getStore(); store.connect(); Folder f = store.getFolder("Sent"); if (!f.exists()) f.create(Folder.HOLDS_MESSAGES); f.appendMessages(new Message[] {msg});
Why and when to perform this taskJ2EE applications can use JavaMail APIs by looking up references to logically named mail connection factories through the java:comp/env/mail subcontext that is declared in the application deployment descriptor and mapped to installation specific mail session resources. As in the case of other J2EE resources, this can be done in order to eliminate the need for the application to hard code references to external resources.
The J2EE specification considers a mail session instance as a resource, or a factory from which mail transport and store connections can be obtained. Do not hard code mail sessions (namely, fill up a Properties object, then use it to create a javax.mai.Session object). Instead, follow the J2EE programming model of configuring resources through the system facilities and then locating them through JNDI lookups.
In the previous sample code, the line javax.mail.Session mail_session = (javax.mail.Session) ctx.lookup("java:comp/env/mail/MailSession3"); is an example of not hard coding a mail session and using a resource name located through JNDI. You can consider the lookup name, mail/MailSession3 , as a soft link to the real resource.
You must define a resource reference for the mail resource in the deployment descriptor of the component, because a mail session is referenced in the JNDI lookup. Typically, you can use an assembly tool shipped with WebSphere Application Server.When you create this reference, be sure that the name of the reference matches the name used in the code. For example, the previous code uses java:comp/env/mail/MailSession3 in its lookup. Therefore the name of this reference must be mail/Session3 , and the type of the resource must be javax.mail.Session. After configuration, the deployment descriptor contains the following entry for the mail resource reference:
<resource-reference> <description>description</description> <res-ref-name>mail/MailSession3</res-ref-name> <res-type>javax.mail.Session</res-type> <res-auth>Container</res-auth>
You can update and remove mail providers and sessions.
To update mail providers and sessions:
Related tasks
Developing applications that use JNDI
Assembling applications
Installing application files with the console
Monitoring overall system health