• No results found

How to use JavaMail to send

N/A
N/A
Protected

Academic year: 2021

Share "How to use JavaMail to send"

Copied!
16
0
0

Loading.... (view fulltext now)

Full text

(1)

Chapter 15

How to use JavaMail to

send email

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

send email

Objectives

Applied

'HYHORSVHUYOHWVWKDWVHQGHPDLOPHVVDJHVWRWKHXVHUVRIWKH

DSSOLFDWLRQ

Knowledge

,QWHUPVRIWKH6073323DQG0,0(SURWRFROVGHVFULEHKRZ

DQHPDLOPHVVDJHLVVHQWIURPRQHFOLHQWWRDQRWKHU

(2)

How email works

Sending server Sending client

Mail client software

Mail server software

Receiving server

Mail server software

Receiving client

Mail client software

SMTP POP

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

Mail server software Mail server software

Three protocols for sending and retrieving email

messages

Protocol

Description

6073

6LPSOH0DLO7UDQVIHU3URWRFRO

LVXVHGWRVHQGDPHVVDJH

IURPRQHPDLOVHUYHUWRDQRWKHU

323

3RVW2IILFH3URWRFRO

LVXVHGWRUHWULHYHPHVVDJHVIURPD

PDLOVHUYHU7KLVSURWRFROWUDQVIHUVDOOPHVVDJHVIURP

WKHPDLOVHUYHUWRWKHPDLOFOLHQW

WKHPDLOVHUYHUWRWKHPDLOFOLHQW

,0$3

,QWHUQHW0HVVDJH$FFHVV3URWRFRO

LVXVHGE\ZHEEDVHG

PDLOVHUYLFHVVXFKDV+RWPDLO<DKRRDQG*PDLO7KLV

SURWRFRODOORZVDZHEEURZVHUWRUHDGPHVVDJHVWKDWDUH

VWRUHGRQWKHPDLOVHUYHU

(3)

Another protocol that’s used with email

Protocol

Description

0,0(

7KH

0XOWLSXUSRVH,QWHUQHW0HVVDJH([WHQVLRQ

W\SH

RU

0,0(

W\SHVSHFLILHVWKHW\SHRIFRQWHQWWKDWFDQ

EHVHQWDVDPHVVDJHRUDWWDFKPHQW

The JAR files for the JavaMail API

File

Description

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

PDLOMDU

&RQWDLQVWKH-DYDFODVVHVIRUWKH-DYD0DLO$3,

DFWLYDWLRQMDU

&RQWDLQVWKH-DYDFODVVHVIRUWKH-DYD%HDQ$FWLYDWLRQ

)UDPHZRUN7KHVHFODVVHVDUHQHFHVVDU\IRUWKH

-DYD0DLO$3,WRUXQ

How to install the JavaMail API

/RFDWHWKHGRZQORDGSDJHIRUWKH-DYD0DLO$3,RQWKH-DYDZHE

VLWHZZZMDYDVXQFRP

&OLFNRQWKH'RZQORDGEXWWRQDQGIROORZWKHLQVWUXFWLRQV

6DYHWKH]LSILOHIRUWKH-DYD0DLO$3,WR\RXUKDUGGLVN7KLVILOH

LVW\SLFDOO\QDPHGVRPHWKLQJOLNHMDYDPDLOB]LS

([WUDFWWKHILOHVIURPWKH]LSILOH

&RS\WKHPDLOMDUILOHWRWKH-'.¶VMUH?OLE?H[WGLUHFWRU\

&RS\WKHPDLOMDUILOHWRWKH-'.¶VMUH?OLE?H[WGLUHFWRU\

(4)

How to install the JavaBeans Activation

Framework API

/RFDWHWKHGRZQORDGSDJHIRUWKH-DYD%HDQV$FWLYDWLRQ

)UDPHZRUN$3,RQWKH-DYDZHEVLWHZZZMDYDVXQFRP

&OLFNRQWKH'RZQORDGEXWWRQDQGIROORZWKHLQVWUXFWLRQV

6DYHWKH]LSILOHIRUWKH-DYD0DLO$3,WR\RXUKDUGGLVN7KLVILOH

LVW\SLFDOO\QDPHGVRPHWKLQJOLNHMDIB]LS

([WUDFWWKHILOHVIURPWKH]LSILOH

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

([WUDFWWKHILOHVIURPWKH]LSILOH

&RS\WKHDFWLYDWLRQMDUILOHWRWKH-'.¶VMUH?OLE?H[WGLUHFWRU\

Three packages for sending email

Package

Description

MDYDXWLO

&RQWDLQVWKH3URSHUWLHVFODVVWKDW¶VXVHGWRVHW

WKHSURSHUWLHVIRUWKHHPDLOVHVVLRQ

MDYD[PDLO

&RQWDLQVWKH6HVVLRQ0HVVDJH$GGUHVV

7UDQVSRUWDQG0HVVDJLQJ([FHSWLRQFODVVHV

QHHGHGWRVHQGDPHVVDJH

MDYD[PDLOLQWHUQHW

&RQWDLQVWKH0LPH0HVVDJHDQG

MDYD[PDLOLQWHUQHW

&RQWDLQVWKH0LPH0HVVDJHDQG

,QWHUQHW$GGUHVVFODVVHVQHHGHGWRVHQGDQHPDLO

PHVVDJHDFURVVWKH,QWHUQHW

(5)

Code that uses the JavaMail API to send an email

try {

// 1 - get a mail session

Properties props = new Properties(); props.put("mail.smtp.host", "localhost");

Session session = Session.getDefaultInstance(props); // 2 - create a message

Message message = new MimeMessage(session); message.setSubject(subject);

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

message.setText(body); // 3 - address the message

Address fromAddress = new InternetAddress(from); Address toAddress = new InternetAddress(to); message.setFrom(fromAddress);

message.setRecipient(Message.RecipientType.TO, toAddress);

Code that uses the JavaMail API (cont.)

// 4 - send the message Transport.send(message); } catch (MessagingException e) { log(e.toString()); }

(6)

Common properties that can be set for a Session

object

Property

Description

PDLOWUDQVSRUWSURWRFRO 6SHFLILHVWKHSURWRFROWKDW¶VXVHGIRUWKH

VHVVLRQ)RUVHQGLQJHPDLOWKHSURWRFROLV

XVXDOO\VPWSRUVPWSV

PDLOVPWSKRVW

6SHFLILHVWKHKRVWFRPSXWHUIRUWKH6073

VHUYHU

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

VHUYHU

PDLOVPWSSRUW

6SHFLILHVWKHSRUWWKDWWKH6073VHUYHULV

XVLQJ

PDLOVPWSDXWK

6SHFLILHVZKHWKHUDXWKHQWLFDWLRQLVUHTXLUHG

WRORJLQWRWKH6073VHUYHU

PDLOVPWSTXLWZDLW

7KLVSURSHUW\FDQEHVHWWRIDOVHWRSUHYHQWDQ

66/([FHSWLRQIURPRFFXUULQJZKHQ\RX

DWWHPSWWRFRQQHFWWRD*0DLO6073VHUYHU

How to get a mail session for a local SMTP server

Properties props = new Properties(); props.put("mail.smtp.host", "localhost");

Session session = Session.getDefaultInstance(props);

Another way to get a mail session for a local

SMTP server

Properties props = new Properties();

props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", "localhost"); props.put("mail.smtp.port", 25);

Session session = Session.getDefaultInstance(props); session.setDebug(true);

(7)

How to get a mail session for a remote SMTP

server

Properties props = new Properties();

props.put("mail.transport.protocol", "smtps"); props.put("mail.smtps.host", "smtp.gmail.com"); props.put("mail.smtps.port", 465);

props.put("mail.smtps.auth", "true"); props.put("mail.smtps.quitwait", "false");

Session session = Session.getDefaultInstance(props); session.setDebug(true);

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

How to create a mail session

$6HVVLRQREMHFWFRQWDLQVLQIRUPDWLRQDERXWWKH

PDLOVHVVLRQ

VXFK

DVWKHSURFRWROWKHKRVWWKHSRUWDQGVRRQ7KLVLVQ¶WWKHVDPH

DVWKH+WWS6HVVLRQREMHFW

7RVHWWKHSURSHUWLHVRID3URSHUWLHVREMHFW\RXFDQXVHWKHSXW

PHWKRGWRVSHFLI\DSURSHUW\QDPHDQGYDOXHIRUHDFKSURSHUW\

7KHVWDWLFJHW'HIDXOW,QVWDQFHPHWKRGRIWKH6HVVLRQFODVVUHWXUQV

WKHGHIDXOW6HVVLRQREMHFWIRUWKHDSSOLFDWLRQ

7KHVHW'HEXJPHWKRGRIWKH6HVVLRQREMHFWFDQEHXVHGWRSULQW

GHEXJJLQJLQIRUPDWLRQDERXWWKHVHVVLRQWRDORJILOH

,I\RXFKDQJHWKHSURSHUWLHVIRUD6HVVLRQREMHFW\RXPXVWUHVWDUW

7RPFDWEHIRUHWKHFKDQJHVWDNHHIIHFW

,IWKH-DYDDSSOLFDWLRQLVUXQQLQJRQWKHVDPHFRPSXWHUDVWKH

6073VHUYHU\RXFDQXVXDOO\XVHWKHORFDOKRVWNH\ZRUGWR

VSHFLI\WKH6073KRVW

(8)

How to create a message

Message message = new MimeMessage(session);

How to set the subject line of a message

message.setSubject("Order Confirmation");

How to set the body of a plain text message

message.setText("Thanks for your order!");

How to set the body of an HTML message

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

How to set the body of an HTML message

message.setContent(

"<H1>Thanks for your order!</H1>", "text/html");

How to create a message

<RXFDQXVHWKH0LPH0HVVDJHFODVVWKDW¶VVWRUHGLQWKH

MDYD[PDLOLQWHUQHWSDFNDJHWRFUHDWHDPHVVDJH7KLVPHVVDJH

H[WHQGVWKH0HVVDJHFODVVWKDW¶VVWRUHGLQWKHMDYDPDLOSDFNDJH

7RFUHDWHD0LPH0HVVDJHREMHFW\RXVXSSO\DYDOLG6HVVLRQ

REMHFWWRWKH0LPH0HVVDJHFRQVWUXFWRU

2QFH\RX¶YHFUHDWHGD0LPH0HVVDJHREMHFW\RXFDQXVHWKH

VHW6XEMHFWDQGVHW7H[WPHWKRGVWRVHWWKHVXEMHFWOLQHDQGERG\RI

WKHHPDLOPHVVDJH7KLVDXWRPDWLFDOO\VHWVWKH0,0(W\SHWR

WKHHPDLOPHVVDJH7KLVDXWRPDWLFDOO\VHWVWKH0,0(W\SHWR

WH[WSODLQ

<RXFDQXVHWKHVHW&RQWHQWPHWKRGWRLQFOXGHDQ+70/

GRFXPHQWDVWKHERG\RIWKHPHVVDJH7RGRWKDWWKHILUVW

DUJXPHQWVSHFLILHVDVWULQJIRUWKH+70/GRFXPHQWDQGWKH

VHFRQGDUJXPHQWVSHFLILHVWH[WKWPODVWKH0,0(W\SH

$OORIWKHVHPHWKRGVWKURZDMDYD[PDLO0HVVDJLQJ([FHSWLRQ

(9)

How to set the From address

Address fromAddress = new

InternetAddress("cds@murach.com"); message.setFrom(fromAddress);

How to set the To address

Address toAddress =

new InternetAddress("andi@yahoo.com"); message.setRecipient(

Message.RecipientType.TO, toAddress);

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

How to set the CC address

Address ccAddress = new InternetAddress("ted@yahoo.com"); message.setRecipient(

Message.RecipientType.CC, ccAddress);

How to set the BCC address

Address bccAddress =

new InternetAddress("jsmith@gmail.com"); message.setRecipient(

Message.RecipientType.BCC, bccAddress);

How to include an email address and a name

Address toAddress = new InternetAddress( "andi@yahoo.com", "Andrea Steelman");

How to send a message to multiple recipients

Address[] mailList = { new InternetAddress("andi@hotmail.com"), new InternetAddress("joelmurach@yahoo.com"), new InternetAddress("jsmith@gmail.com") }; message.setRecipients( message.setRecipients( Message.RecipientType.TO, mailList);

How to add recipients to a message

Address toAddress =

new InternetAddress("joelmurach@yahoo.com"); message.addRecipient(

(10)

How to address a message

8VHWKH,QWHUQHW$GGUHVVFODVVWKDW¶VVWRUHGLQWKH

MDYD[PDLOLQWHUQHWSDFNDJH

7RVHWWKH)URPDGGUHVVXVHWKHVHW)URPPHWKRGRIWKH

0LPH0HVVDJHREMHFW7RVHWWKH7R&&

FDUERQFRS\

DQG%&&

EOLQGFDUERQFRS\

DGGUHVVHVXVHWKHVHW5HFLSLHQWDQG

VHW5HFLSLHQWVPHWKRGVRIWKH0LPH0HVVDJHREMHFW

7RLQFOXGHDQDPHIRUDQHPDLODGGUHVV\RXFDQDGGDVHFRQG

DUJXPHQWWRWKH,QWHUQHW$GGUHVVFRQVWUXFWRU+RZHYHUWKLV

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

DUJXPHQWWRWKH,QWHUQHW$GGUHVVFRQVWUXFWRU+RZHYHUWKLV

FRQVWUXFWRUWKURZVDQH[FHSWLRQRIWKH

MDYDLR8QVXSSRUWHG(QFRGLQJ([FHSWLRQW\SH

7RVHQGDQHPDLOPHVVDJHWRPXOWLSOHUHFLSLHQWV\RXFDQSDVVDQ

DUUD\RI$GGUHVVREMHFWVWRWKHVHW5HFLSLHQWVPHWKRG7RDGG

HPDLODGGUHVVHVWRDQ\H[LVWLQJDGGUHVVHVIRUDPHVVDJHXVHWKH

DGG5HFLSLHQWDQGDGG5HFLSLHQWVPHWKRGV

$OORIWKHVHPHWKRGVWKURZDMDYD[PDLO0HVVDJLQJ([FHSWLRQ

How to send a message when no authentication is

required

Transport.send(message);

How to send a message when authentication is

required

Transport transport = session.getTransport();

transport.connect("johnsmith@gmail.com", "sesame"); transport.sendMessage(

message, message.getAllRecipients()); message, message.getAllRecipients()); transport.close();

(11)

How to send a message

,IWKH6073VHUYHUGRHVQ¶WUHTXLUHDXWKHQWLFDWLRQ\RXFDQXVHWKH

VWDWLFVHQGPHWKRGRIWKH7UDQVSRUWFODVV

,IWKH6073VHUYHUUHTXLUHVDXWKHQWLFDWLRQ\RXFDQXVHWKHVWDWLF

JHW7UDQVSRUWPHWKRGRIWKH7UDQVSRUWFODVVWRUHWXUQD7UDQVSRUW

REMHFW7KHQ\RXFDQXVHWKHFRQQHFWPHWKRGWRVSHFLI\D

XVHUQDPHDQGSDVVZRUGWKDWFDQEHXVHGWRFRQQHFWWRWKHVHUYHU

WKHVHQG0HVVDJHPHWKRGWRVHQGWKHPHVVDJHDQGWKHFORVH

PHWKRGWRFORVHWKHFRQQHFWLRQ

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

PHWKRGWRFORVHWKHFRQQHFWLRQ

,IWKH6073KRVWLVLQFRUUHFWLQWKHVHVVLRQREMHFWRULIDPHVVDJH

FDQ¶WEHVHQWWKHVHQGPHWKRGZLOOWKURZD6HQG)DLOHG([FHSWLRQ

REMHFW<RXFDQXVHWKLVREMHFWWRUHWXUQLQYDOLGDGGUHVVHVYDOLG

DGGUHVVHVWKDWKDYHEHHQVHQWDQGYDOLGDGGUHVVHVWKDWKDYHQ¶W

EHHQVHQW

7KH6HQG)DLOHG([FHSWLRQFODVVLQKHULWVWKH0HVVDJLQJ([FHSWLRQ

FODVV

A helper class for sending an email with a local

SMTP server

package util;

import java.util.Properties; import javax.mail.*;

import javax.mail.internet.*; public class MailUtilLocal {

public static void sendMail(String to, String from, public static void sendMail(String to, String from, String subject, String body, boolean bodyIsHTML) throws MessagingException

{

// 1 - get a mail session

Properties props = new Properties();

props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", "localhost"); props.put("mail.smtp.port", 25);

Session session = Session.getDefaultInstance(props); session.setDebug(true);

(12)

A helper class for sending an email with a local

SMTP server (cont.)

// 2 - create a message

Message message = new MimeMessage(session); message.setSubject(subject);

if (bodyIsHTML)

message.setContent(body, "text/html"); else

message.setText(body); // 3 - address the message

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

// 3 - address the message

Address fromAddress = new InternetAddress(from); Address toAddress = new InternetAddress(to); message.setFrom(fromAddress);

message.setRecipient(

Message.RecipientType.TO, toAddress); // 4 - send the message

Transport.send(message); }

}

A servlet that sends an email

package email; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.MessagingException; import business.User; import data.UserIO; import util.*;

public class AddToEmailListServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

(13)

A servlet that sends an email (cont.)

// get parameters from the request String firstName =

request.getParameter("firstName");

String lastName = request.getParameter("lastName"); String emailAddress =

request.getParameter("emailAddress");

// create the User object and write it to a file User user = new User(

firstName, lastName, emailAddress);

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

ServletContext sc = getServletContext(); String path = sc.getRealPath(

"/WEB-INF/EmailList.txt"); UserIO.addRecord(user, path);

// store the User object in the session HttpSession session = request.getSession(); session.setAttribute("user", user);

A servlet that sends an email (cont.)

// send email to user String to = emailAddress;

String from = "email_list@murach.com";

String subject = "Welcome to our email list"; String body = "Dear " + firstName + ",\n\n" + "Thanks for joining our email list. " +

"We'll make sure to send you announcements " + "about new products and promotions.\n" +

"Have a great day and thanks again!\n\n" + "Kelly Slivkoff\n" +

"Mike Murach & Associates"; boolean isBodyHTML = false; try

{

MailUtilLocal.sendMail(

to, from, subject, body, isBodyHTML); }

(14)

A servlet that sends an email (cont.)

catch (MessagingException e) {

String errorMessage =

"ERROR: Unable to send email. " +

"Check Tomcat logs for details.<br>" + "NOTE: You may need to configure your " + "system as described in chapter 15.<br>" + "ERROR MESSAGE: " + e.getMessage();

request.setAttribute(

"errorMessage", errorMessage);

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

this.log(

"Unable to send email. \n" +

"Here is the email you tried to send: \n" + "=====================================\n" + "TO: " + emailAddress + "\n" + "FROM: " + from + "\n" + "SUBJECT: " + subject + "\n" + "\n" + body + "\n\n"); }

A servlet that sends an email (cont.)

// forward request and response to JSP page String url = "/display_email_entry.jsp"; RequestDispatcher dispatcher =

getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response);

} }

(15)

A helper class for sending an email with a remote

SMTP server

package util; import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class MailUtilYahoo {

public static void sendMail(String to, String from,

0XUDFK¶V-DYD6HUYOHWV-63QG(G& ‹0LNH0XUDFK $VVRFLDWHV,QF 6OLGH

public static void sendMail(String to, String from, String subject, String body, boolean bodyIsHTML) throws MessagingException

{

// 1 - get a mail session

Properties props = new Properties();

props.put("mail.transport.protocol", "smtps");

props.put("mail.smtps.host", "smtp.mail.yahoo.com"); props.put("mail.smtps.port", 465);

props.put("mail.smtps.auth", "true");

Session session = Session.getDefaultInstance(props); session.setDebug(true);

A helper class for sending an email with a remote

SMTP server (cont.)

// 2 - create a message

Message message = new MimeMessage(session); message.setSubject(subject);

if (bodyIsHTML)

message.setContent(body, "text/html"); else

message.setText(body); // 3 - address the message

Address fromAddress = new InternetAddress(from); Address toAddress = new InternetAddress(to); message.setFrom(fromAddress);

message.setRecipient(

(16)

A helper class for sending an email with a remote

SMTP server (cont.)

// 4 - send the message

Transport transport = session.getTransport(); transport.connect("johnsmith", "sesame"); transport.sendMessage( message, message.getAllRecipients()); transport.close(); } }

References

Related documents

SANDVIK CNMA 12 04 08 H1P (uncoated carbide) inserts were used throughout. conventional emulsified mineral oil based flood cooling system was utilized. The three main

 Presence of cancer care infrastructure such as medical laboratory, ultrasound facilities, X-ray facilities, Radio- and chemo- therapy facilities, nuclear

Commercial Financial Technical Execution Engineering &amp; Procurement Construction &amp; Startup Project Execution Planning Front-End Engineering Design Strategic Project

The four potential effects from FDI in services sectors just described - price reductions, quality improvements, increased variety of services available, and knowledge spillovers

[r]

As Halley demonstrates in “Rape at Rome: Feminist Interventions in the Criminalization of Sex-Related Violence in Positive International Criminal Law” (2008), feminists advanced

livestock development issues related to these linkages. These beliefs limit the scope of intervention programs to promote livestock and limit their potential contribu- tion to

Climate change has the power to affect many ecological processes, but the most obvious changes ap- pear in the form of melting sea ice, sea level rise, changes in oceanic