0% found this document useful (0 votes)
10 views13 pages

Java Mail API: Sending Emails Explained

The document explains the functioning of email protocols including SMTP, POP, and IMAP, detailing how messages are sent and received between clients and servers. It also introduces the Java Mail API, which allows Java developers to automate email sending by creating sessions, composing messages, and setting properties. Additionally, it outlines the steps for creating an email session, setting message components, and sending messages, including handling authentication if required.

Uploaded by

Ja Khang
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views13 pages

Java Mail API: Sending Emails Explained

The document explains the functioning of email protocols including SMTP, POP, and IMAP, detailing how messages are sent and received between clients and servers. It also introduces the Java Mail API, which allows Java developers to automate email sending by creating sessions, composing messages, and setting properties. Additionally, it outlines the steps for creating an email session, setting message components, and sending messages, including handling authentication if required.

Uploaded by

Ja Khang
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Java Mail

How email works


Sending Client Receiving Client

Mail Client Mail Client


Software Software

SMTP POP/ IMAP

Sending Server Receiving Server


SMTP
Mail Server Mail Server
Software Software
3 protocols
• SMTP: Simple Mail Transfer Protocol
– is used to send a message from the mail client software to
your mail server / or from one mail server to another
• POP: Post Office Protocol
– transfers all messages from the mail server to the mail
client. POP in version 3: POP3
• IMAP: Internet Message Access Protocol
– Is used by web-based mail services such as Hotmail,
Yahoo, and Gmail.
– Allows a web browser to read messages that are stored on
the mail server. IMAP in version 4: IMAP4
Normal Email Process
• Mail client software converts message to SMTP (or
other) format before sending to server
• Common form for usual components of message:
Sender, Recipient(s), Subject, Text, …
• Mail server sends message in MIME (Multipurpose
Internet Message Extension) protocol to receiving
server
• Mail client software on receiving client accesses
using mail client software (possibly different): POP,
IMAP
Java Mail
• Java Mail API is a programming interface that
makes it easy for Java developers to write code that
automatically sends an email.
• Key idea: Java Mail (or other mail software) must
emulate what mail client software does
– Create SMTP or other protocol message
– Insert required mail components
– Connect with sending server and transmit message
• Requires mail classes
– Download from JavaMail Home Page
– Insert .jar files into java libraries.
Steps in Java Mail
• Create a mail session
– Creates email message object
• Compose message
– Set message components: Properties of message object
– Set addresses: Can be list for group of recipients
• Send message
– May need to identify self to server
Creating an Email Session
• Create a Properties object to store information:
– Generic Java class to store attribute/value pairs
– Property props = new Properties();
• Specify the sending server:
[Link]("[Link]", URL of mail server);
• Create a new session object from those properties:
Session s = [Link](props);
• Create new MimeMessage object from session
– MimeMessage message = new MimeMessage(s);
Common properties
• [Link]: specifies the protocol
that’s used for the session
• [Link]: specifies the host computer for
SMTP server
• [Link]: specifies the port that the SMTP
server is using
• [Link]: specifies whether authentication
is required to log in to the SMTP server
• [Link]: this property can be set to
false to prevent an SSLException from occurring
when you attempt to connect to a Gmail SMTP
server
Common properties
• To set the properties of Properties object, you can use
the put method to specify of a property name and value
• The static getDefaultInstance method of the Session
class returns the default Session object for the
application
• The setDebug method of the Session object can be
used to print debugging information about the session to
a log file
• If you change the properties for a Session object, you
must restart Tomcat before the changes take effect
• If the Java application is running on the same computer
as the SMTP server, you can use the localhost keyword
to specify the SMTP host.
Setting Message Components
• Set the subject:
[Link]("subject");
• Set the message text:
[Link]("Thanks for your order!");
// text/plain
• Could also be html or other types
– Will need to specify MIME type
String response =
"<html><head><title>Reciept</title</head>
<body><h3>Thank you for your order!</h3>";
[Link](response, "text/html");
Setting Addresses
• Use setRecipient method
– Specify internet address of recipient
• Must use InternetAddress class
• InternetAddress constructor requires email address,
can also optionally give name
– Specify TO, CC, or BCC
– Can add multiple recipients
[Link]([Link],
new InternetAddress("slade@[Link]"));
[Link]([Link],
new InternetAddress(barney@[Link],
"Barney Rubble"));
Setting Addresses
• Address can also be a list
– Good for mailing lists
– Array of type Address
• Use setRecipients method
Address[] list = new Address[size of mailing list];
for (int i = 0; i < size of mailing list; i++) {
list[i] = get next address for file;
}
[Link]([Link], list);
• Use addRecipient method
[Link]([Link],
new InternetAddress("slade@[Link]"))
• Using addRecipient/addRecipients to add email
addresses to any existing addresses for a message
Sending Messages
• Simple method:
[Link](message);

• More complex method if server requires


authentication:
– Create Transport object from sessions
Transport t = [Link]();
– Connect to server with name and password
[Link]("your name", "your password");
– Send the message
[Link](message,
[Link]());

You might also like