SlideShare una empresa de Scribd logo
1 de 14
Server-side
Web Programming
    Lecture 19:
     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
    –   Etc.
• Mail server sends message in MIME protocol to receiving server
    – Multipurpose Internet Message Extension
• 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 www.java.sun.com
   – Insert mail.jar and activation.jar file into java libraries
       • mail. jar: contains the Java classes for the Java Mail API
       • activation. jar: contains the Java classes for the JavaBean Activation
         Framework. These classes are necessary for the JavaMail API to run
How to install the Java Mail API and
 JavaBeans Activation Framework API
• Locate the download page for the JavaMail API/
  JavaBeans Activation Framework API on the
  Java website: www.java.sun.com
• Click on the Download button and follow the
  instructions
• Save the zip file: javamail-1_4.zip/jaf-1_1.zip to
  your hard disk
• Extract the files from the zip file
• Copy the mail.jar/activation.jar file to the JDK’s
  jrelibext directory
Steps in Java Mail
• Create a mail session
    – Creates email message object
• 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


• Will need mail libraries
<%@ page import="javax.mail.*, javax.mail.internet.*, java.util.*"%>
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:
   – props.put(“mail.smtp.host”, URL of mail server);
• Create a new session object from those properties:
   – Session s = Session.getDefaultInstance(props);
• Create new MimeMessage object from session
   – MimeMessage message = new MimeMessage(s);
Common properties
• mail.transport.protocol: specifies the protocol that’s used
  for the session
• mail.smtp.host: specifies the host computer for SMTP
  server
• mail.smtp.port: specifies the port that the SMTP server is
  using
• mail.smtp.auth: specifies whether authentication is
  required to log in to the SMTP server
• mail.smtp.quitwait: this property can be set to false to
  prevent an SSLException from occurring when you
  attempt to connect to a Gmail SMTP server
• 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:
   – message.setSubject(“subject”);
• Set the message text:
   – message.setText(“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>”;

  message.setContent(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


Message.setRecipient(Message.RecipientType.TO,
                    new InternetAddress(“slade@quarry.com
  ”));
Message.setRecipient(Message.RecipientType.CC,
  new InternetAddress(barney@aolrock.com, “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;
    }
Message.setRecipients(Message.RecipientType.TO, list);
• Use addRecipient method
Message.addRecipient(Message.RecipientType.TO,
         new InternetAddress(“slade@quarry.com”) )
Using addRecipient/addRecipients to add email addresses to any
   existing addresses for a message
Sending Messages
• Simple method:
  Transport.send(message);

• More complex method if server requires authentication:
   – Create Transport object from sessions
     Transport t = session.getTransport();
   – Connect to server with name and password
     t.connect(“your name”, “your password”);
   – Send the message
     t.sendMessage(message, message.getAllRecipients());

Más contenido relacionado

La actualidad más candente

Cocoapods and Most common used library in Swift
Cocoapods and Most common used library in SwiftCocoapods and Most common used library in Swift
Cocoapods and Most common used library in SwiftWan Muzaffar Wan Hashim
 
retrieving the mail
retrieving the mailretrieving the mail
retrieving the mailtumetr1
 
Connectors in mule
Connectors in muleConnectors in mule
Connectors in muleSindhu VL
 
S2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring BatchS2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring BatchGunnar Hillert
 
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Managing ejabberd Platforms with Docker - ejabberd Workshop #1Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Managing ejabberd Platforms with Docker - ejabberd Workshop #1Mickaël Rémond
 
Anypoint mq queues and exchanges
Anypoint mq queues and exchangesAnypoint mq queues and exchanges
Anypoint mq queues and exchangesSon Nguyen
 
What is SMTP Server?
What is SMTP Server?What is SMTP Server?
What is SMTP Server?SMTPGET
 
Ejabberd with xmpp
Ejabberd with xmppEjabberd with xmpp
Ejabberd with xmppPrem Narain
 
Muleesbcomponents1 160625154208
Muleesbcomponents1 160625154208Muleesbcomponents1 160625154208
Muleesbcomponents1 160625154208ppts123456
 
Mule enricher component
Mule enricher component Mule enricher component
Mule enricher component Gandham38
 
J meter introduction
J meter introductionJ meter introduction
J meter introductionBharath Kumar
 
Learning j meter in 60 minutes
Learning j meter in 60 minutesLearning j meter in 60 minutes
Learning j meter in 60 minutesAlon Girmonsky
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7StephenKardian
 
APACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXAPACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXwebhostingguy
 

La actualidad más candente (20)

Spring integration
Spring integrationSpring integration
Spring integration
 
Cocoapods and Most common used library in Swift
Cocoapods and Most common used library in SwiftCocoapods and Most common used library in Swift
Cocoapods and Most common used library in Swift
 
retrieving the mail
retrieving the mailretrieving the mail
retrieving the mail
 
Connectors in mule
Connectors in muleConnectors in mule
Connectors in mule
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Email using mule
Email using muleEmail using mule
Email using mule
 
S2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring BatchS2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring Batch
 
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Managing ejabberd Platforms with Docker - ejabberd Workshop #1Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
 
Anypoint mq queues and exchanges
Anypoint mq queues and exchangesAnypoint mq queues and exchanges
Anypoint mq queues and exchanges
 
What is SMTP Server?
What is SMTP Server?What is SMTP Server?
What is SMTP Server?
 
Ejabberd with xmpp
Ejabberd with xmppEjabberd with xmpp
Ejabberd with xmpp
 
Muleesbcomponents1 160625154208
Muleesbcomponents1 160625154208Muleesbcomponents1 160625154208
Muleesbcomponents1 160625154208
 
Mule enricher component
Mule enricher component Mule enricher component
Mule enricher component
 
Mule batch
Mule batchMule batch
Mule batch
 
J meter introduction
J meter introductionJ meter introduction
J meter introduction
 
Learning j meter in 60 minutes
Learning j meter in 60 minutesLearning j meter in 60 minutes
Learning j meter in 60 minutes
 
Mule connectors-session1
Mule connectors-session1Mule connectors-session1
Mule connectors-session1
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7
 
APACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUXAPACHE WEB SERVER FOR LINUX
APACHE WEB SERVER FOR LINUX
 
Mule Requester Usage Demo
Mule Requester Usage DemoMule Requester Usage Demo
Mule Requester Usage Demo
 

Destacado

Phương pháp tính
Phương pháp tínhPhương pháp tính
Phương pháp tínhhanoipost
 
Tailieu.vncty.com bai tap va bai giai phuong phap tinh
Tailieu.vncty.com   bai tap va bai giai phuong phap tinhTailieu.vncty.com   bai tap va bai giai phuong phap tinh
Tailieu.vncty.com bai tap va bai giai phuong phap tinhTrần Đức Anh
 
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phânTính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phânChien Dang
 
Giải bài tập Phương pháp tính
Giải bài tập Phương pháp tínhGiải bài tập Phương pháp tính
Giải bài tập Phương pháp tínhdinhtrongtran39
 
phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson caovanquy
 
Giai nhanh phuong phap tinh
Giai nhanh phuong phap tinhGiai nhanh phuong phap tinh
Giai nhanh phuong phap tinhPham Huy
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tínhPham Huy
 

Destacado (8)

Chuong02
Chuong02Chuong02
Chuong02
 
Phương pháp tính
Phương pháp tínhPhương pháp tính
Phương pháp tính
 
Tailieu.vncty.com bai tap va bai giai phuong phap tinh
Tailieu.vncty.com   bai tap va bai giai phuong phap tinhTailieu.vncty.com   bai tap va bai giai phuong phap tinh
Tailieu.vncty.com bai tap va bai giai phuong phap tinh
 
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phânTính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
Tính toán khoa học - Chương 5: Tính gần đúng đạo hàm và tích phân
 
Giải bài tập Phương pháp tính
Giải bài tập Phương pháp tínhGiải bài tập Phương pháp tính
Giải bài tập Phương pháp tính
 
phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson phương pháp hình thang,Công thức Simpson
phương pháp hình thang,Công thức Simpson
 
Giai nhanh phuong phap tinh
Giai nhanh phuong phap tinhGiai nhanh phuong phap tinh
Giai nhanh phuong phap tinh
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tính
 

Similar a Lecture19 (20)

Lecture19
Lecture19Lecture19
Lecture19
 
Voice enable smtp client
Voice enable smtp clientVoice enable smtp client
Voice enable smtp client
 
Mail
MailMail
Mail
 
Tcpip services and applications
Tcpip services and applicationsTcpip services and applications
Tcpip services and applications
 
window server 2008 mail configuration
window server 2008 mail configurationwindow server 2008 mail configuration
window server 2008 mail configuration
 
Jms using j boss
Jms using j bossJms using j boss
Jms using j boss
 
Internet mail server
Internet mail server Internet mail server
Internet mail server
 
4-Lect_4-2.pptx4-Lect_4-2.pptx4-Lect_4-2.pptx
4-Lect_4-2.pptx4-Lect_4-2.pptx4-Lect_4-2.pptx4-Lect_4-2.pptx4-Lect_4-2.pptx4-Lect_4-2.pptx
4-Lect_4-2.pptx4-Lect_4-2.pptx4-Lect_4-2.pptx
 
Postman.ppt
Postman.pptPostman.ppt
Postman.ppt
 
Ruby
RubyRuby
Ruby
 
009478419.pdf
009478419.pdf009478419.pdf
009478419.pdf
 
Spam Filter
Spam FilterSpam Filter
Spam Filter
 
Simple mail transfer protocol
Simple mail transfer protocolSimple mail transfer protocol
Simple mail transfer protocol
 
Topic 2.4 network services
Topic 2.4 network servicesTopic 2.4 network services
Topic 2.4 network services
 
Servlet.ppt
Servlet.pptServlet.ppt
Servlet.ppt
 
Servlet.ppt
Servlet.pptServlet.ppt
Servlet.ppt
 
Servlet1.ppt
Servlet1.pptServlet1.ppt
Servlet1.ppt
 
Ch22 system administration
Ch22 system administration Ch22 system administration
Ch22 system administration
 
Electronic mail
Electronic mailElectronic mail
Electronic mail
 
Computer networks unit v
Computer networks    unit vComputer networks    unit v
Computer networks unit v
 

Más de Châu Thanh Chương (20)

Lecture18
Lecture18Lecture18
Lecture18
 
Lecture17
Lecture17Lecture17
Lecture17
 
Lecture16
Lecture16Lecture16
Lecture16
 
Lecture15
Lecture15Lecture15
Lecture15
 
Lecture14
Lecture14Lecture14
Lecture14
 
Lecture13
Lecture13Lecture13
Lecture13
 
Lecture12
Lecture12Lecture12
Lecture12
 
Lecture11
Lecture11Lecture11
Lecture11
 
Lecture10
Lecture10Lecture10
Lecture10
 
Lecture9
Lecture9Lecture9
Lecture9
 
Lecture8
Lecture8Lecture8
Lecture8
 
Lecture7 pattern
Lecture7 patternLecture7 pattern
Lecture7 pattern
 
Lecture6
Lecture6Lecture6
Lecture6
 
Lecture5
Lecture5Lecture5
Lecture5
 
Lecture4
Lecture4Lecture4
Lecture4
 
Lecture3
Lecture3Lecture3
Lecture3
 
Lecture2
Lecture2Lecture2
Lecture2
 
Lecture1
Lecture1Lecture1
Lecture1
 
7 data management design
7 data management design7 data management design
7 data management design
 
6 class design
6 class design6 class design
6 class design
 

Último

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Último (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Lecture19

  • 1. Server-side Web Programming Lecture 19: Java Mail
  • 2. 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. 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
  • 4. 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 – Etc. • Mail server sends message in MIME protocol to receiving server – Multipurpose Internet Message Extension • Mail client software on receiving client accesses using mail client software (possibly different) – POP – IMAP
  • 5. 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 www.java.sun.com – Insert mail.jar and activation.jar file into java libraries • mail. jar: contains the Java classes for the Java Mail API • activation. jar: contains the Java classes for the JavaBean Activation Framework. These classes are necessary for the JavaMail API to run
  • 6. How to install the Java Mail API and JavaBeans Activation Framework API • Locate the download page for the JavaMail API/ JavaBeans Activation Framework API on the Java website: www.java.sun.com • Click on the Download button and follow the instructions • Save the zip file: javamail-1_4.zip/jaf-1_1.zip to your hard disk • Extract the files from the zip file • Copy the mail.jar/activation.jar file to the JDK’s jrelibext directory
  • 7. Steps in Java Mail • Create a mail session – Creates email message object • 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 • Will need mail libraries <%@ page import="javax.mail.*, javax.mail.internet.*, java.util.*"%>
  • 8. 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: – props.put(“mail.smtp.host”, URL of mail server); • Create a new session object from those properties: – Session s = Session.getDefaultInstance(props); • Create new MimeMessage object from session – MimeMessage message = new MimeMessage(s);
  • 9. Common properties • mail.transport.protocol: specifies the protocol that’s used for the session • mail.smtp.host: specifies the host computer for SMTP server • mail.smtp.port: specifies the port that the SMTP server is using • mail.smtp.auth: specifies whether authentication is required to log in to the SMTP server • mail.smtp.quitwait: this property can be set to false to prevent an SSLException from occurring when you attempt to connect to a Gmail SMTP server
  • 10. • 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.
  • 11. Setting Message Components • Set the subject: – message.setSubject(“subject”); • Set the message text: – message.setText(“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>”; message.setContent(response, “text/html”);
  • 12. 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 Message.setRecipient(Message.RecipientType.TO, new InternetAddress(“slade@quarry.com ”)); Message.setRecipient(Message.RecipientType.CC, new InternetAddress(barney@aolrock.com, “Barney Rubble”));
  • 13. 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; } Message.setRecipients(Message.RecipientType.TO, list); • Use addRecipient method Message.addRecipient(Message.RecipientType.TO, new InternetAddress(“slade@quarry.com”) ) Using addRecipient/addRecipients to add email addresses to any existing addresses for a message
  • 14. Sending Messages • Simple method: Transport.send(message); • More complex method if server requires authentication: – Create Transport object from sessions Transport t = session.getTransport(); – Connect to server with name and password t.connect(“your name”, “your password”); – Send the message t.sendMessage(message, message.getAllRecipients());