type=page
status=published
title=Using the Jakarta Mail API
prev=jms.html
~~~~~~
Using the Jakarta Mail API
==========================

[[GSDVG00021]][[beaow]]


[[using-the-jakarta-mail-api]]
18 Using the Jakarta Mail API
-----------------------------

This chapter describes how to use the Jakarta Mail API, which provides a set
of abstract classes defining objects that comprise a mail system.

The following topics are addressed here:

* link:#beaox[Introducing Jakarta Mail]
* link:#beaoy[Creating a Jakarta Mail Session]
* link:#beaoz[Jakarta Mail Session Properties]
* link:#beapa[Looking Up a Jakarta Mail Session]
* link:#fwfiy[Sending and Reading Messages Using Jakarta Mail]
* link:#gkpfg[Using Application-Scoped Jakarta Mail Resources]


[NOTE]
=======================================================================

Jakarta Mail resources are supported only in the full Eclipse GlassFish
Server, not in the Web Profile.

=======================================================================


[[beaox]][[GSDVG00200]][[introducing-jakarta-mail]]

Introducing Jakarta Mail
~~~~~~~~~~~~~~~~~~~~~~~~

The Jakarta Mail 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 Jakarta Mail API includes support for the IMAP4, POP3,
and SMTP protocols.

The Jakarta Mail 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.
* Jakarta Mail uses the JavaBeans Activation Framework (JAF) to encapsulate
message data and to handle commands intended to interact with that data.

For more information, see
"link:../administration-guide/mail.html#GSADG00019[Administering the Jakarta Mail Service]"
in GlassFish Server Administration Guide
and the Jakarta Mail specification at
`https://jakarta.ee/specifications/mail`.

[[beaoy]][[GSDVG00201]][[creating-a-jakarta-mail-session]]

Creating a Jakarta Mail Session
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can create a Jakarta Mail session in the following ways:

* In the Administration Console, open the Resources component and select
Jakarta Mail Sessions. For details, click the Help button in the
Administration Console.
* Use the `asadmin create-mail-resource` command. For details, see
the link:../reference-manual/toc.html#GSRFM[GlassFish Server Reference Manual].

[[beaoz]][[GSDVG00202]][[jakarta-mail-session-properties]]

Jakarta Mail Session Properties
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can set properties for a Jakarta Mail `Session` object. Every property
name must start with a `mail-` prefix. The GlassFish Server changes the
dash (`-`) character to a period (`.`) in the name of the property and
saves the property to the `MailConfiguration` and Jakarta Mail `Session`
objects. If the name of the property doesn't start with `mail-`, the
property is ignored.

For example, if you want to define the property `mail.from` in a
Jakarta Mail `Session` object, first define the property as follows:

* Name - `mail-from`
* Value - `john.doe@sun.com`

[[beapa]][[GSDVG00203]][[looking-up-a-jakarta-mail-session]]

Looking Up a Jakarta Mail Session
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The standard Java Naming and Directory Interface (JNDI) subcontext for
Jakarta Mail sessions is `java:comp/env/mail`.

Registering Jakarta Mail sessions in the `mail` naming subcontext of a JNDI
namespace, or in one of its child subcontexts, is standard. The JNDI
namespace is hierarchical, like a file system's directory structure, so
it is easy to find and nest references. A Jakarta Mail session is bound to a
logical JNDI name. The name identifies a subcontext, `mail`, of the root
context, and a logical name. To change the Jakarta Mail session, you can
change its entry in the JNDI namespace without having to modify the
application.

The resource lookup in the application code looks like this:

[source,oac_no_warn]
----
InitialContext ic = new InitialContext();
String snName = "java:comp/env/mail/MyMailSession";
Session session = (Session)ic.lookup(snName);
----

For more information about the JNDI API, see link:jndi.html#beanr[Using
the Java Naming and Directory Interface].

[[fwfiy]][[GSDVG00204]][[sending-and-reading-messages-using-jakarta-mail]]

Sending and Reading Messages Using Jakarta Mail
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following topics are addressed here:

* link:#beapb[To Send a Message Using Jakarta Mail]
* link:#beapc[To Read a Message Using Jakarta Mail]

[[beapb]][[GSDVG00079]][[to-send-a-message-using-jakarta-mail]]

To Send a Message Using Jakarta Mail
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1.  Import the packages that you need. +
[source,oac_no_warn]
----
import java.util.*;
import jakarta.activation.*;
import jakarta.mail.*;
import jakarta.mail.internet.*;
import javax.naming.*;
----
2.  Look up the Jakarta Mail session. +
[source,oac_no_warn]
----
InitialContext ic = new InitialContext();
String snName = "java:comp/env/mail/MyMailSession";
Session session = (Session)ic.lookup(snName);
----
For more information, see link:#beapa[Looking Up a Jakarta Mail Session].
3.  Override the Jakarta Mail session properties if necessary. +
For example: +
[source,oac_no_warn]
----
Properties props = session.getProperties();
props.put("mail.from", "user2@mailserver.com");
----
4.  Create a `MimeMessage`. +
The msgRecipient, msgSubject, and msgTxt variables in the following
example contain input from the user: +
[source,oac_no_warn]
----
Message msg = new MimeMessage(session);
msg.setSubject(msgSubject);
msg.setSentDate(new Date());
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, 
   InternetAddress.parse(msgRecipient, false));
msg.setText(msgTxt);
----
5.  Send the message. +
[source,oac_no_warn]
----
Transport.send(msg);
----

[[beapc]][[GSDVG00080]][[to-read-a-message-using-jakarta-mail]]

To Read a Message Using Jakarta Mail
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1.  Import the packages that you need. +
[source,oac_no_warn]
----
import java.util.*;
import jakarta.activation.*;
import jakarta.mail.*;
import jakarta.mail.internet.*;
import javax.naming.*;
----
2.  Look up the Jakarta Mail session. +
[source,oac_no_warn]
----
InitialContext ic = new InitialContext();
String snName = "java:comp/env/mail/MyMailSession";
Session session = (jakarta.mail.Session)ic.lookup(snName);
----
For more information, see link:#beapa[Looking Up a Jakarta Mail Session].
3.  Override the Jakarta Mail session properties if necessary. +
For example: +
[source,oac_no_warn]
----
Properties props = session.getProperties();
props.put("mail.from", "user2@mailserver.com");
----
4.  Get a `Store` object from the `Session`, then connect to the mail
server using the Store object's `connect` method. +
You must supply a mail server name, a mail user name, and a password. +
[source,oac_no_warn]
----
Store store = session.getStore();
store.connect("MailServer", "MailUser", "secret");
----
5.  Get the INBOX folder. +
[source,oac_no_warn]
----
Folder folder = store.getFolder("INBOX");
----
6.  It is efficient to read the `Message` objects (which represent
messages on the server) into an array. +
[source,oac_no_warn]
----
Message[] messages = folder.getMessages();
----

[[gkpfg]][[GSDVG00205]][[using-application-scoped-jakarta-mail-resources]]

Using Application-Scoped Jakarta Mail Resources
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can define an application-scoped Jakarta Mail or other resource for an
enterprise application, web module, EJB module, connector module, or
application client module by supplying a `glassfish-resources.xml`
deployment descriptor file. For details, see
"link:../application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in GlassFish Server
Open Source Edition Application Deployment Guide.


