java training introduction to java mail n.
Download
Skip this Video
Download Presentation
Java Training Introduction to Java Mail

Loading in 2 Seconds...

play fullscreen
1 / 26

Java Training Introduction to Java Mail - PowerPoint PPT Presentation


  • 133 Views
  • Uploaded on

Java Training Introduction to Java Mail. Written by Jeff Smith. What is JavaMail? -1. JavaMail is an API for sending and receiving email using Java. The current version is 1.3.1 and can be downloaded from Sun's website at: http://java.sun.com/products/javamail/ Possible uses:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Java Training Introduction to Java Mail' - liliha


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
what is javamail 1
What is JavaMail? -1
  • JavaMail is an API for sending and receiving email using Java. The current version is 1.3.1 and can be downloaded from Sun's website at:

http://java.sun.com/products/javamail/

  • Possible uses:
    • Send email from web pages using servlets
    • Create a GUI email client
    • Send email from Java stored procedures
    • Send email from any type of Java application
    • Spam your friends and enemies! (read email addresses from a database, write a for () loop, and away the emails go!)
what is javamail 2
What is JavaMail? -2
  • To send JavaMail, you'll need to add at least two JAR files from Sun to your classpath (placing them in a lib directory may be a good idea)
    • activation.jar
    • mail.jar

(Note: You can download these files from the Java Zone)

  • For more complex emailing tasks (like receiving or managing pop3 or imap mail servers), you'll need to download additional files like pop3.jar and imap.jar.
  • You will also need access to a mail server and possibly a username/password for that mail server
how does email work
How Does Email Work?
  • In general, each internet domain has an email server.
  • When you send out an email
    • Your email client program sends the message to your email server
    • Your email server contacts the addressee's email server using the SMTP (simple mail transfer protocol)
    • Your email server verifies that the addressee's user name is valid
    • Your email server then transfers the email to the addressee's email server
    • When the addressee logs into his email server (using his email client program), he gets his email
mail servers sendmail 1
Mail Servers (sendmail)-1
  • sendmail is the most commonly used mail server in the world, as it generally comes free with Unix and Linux installations
    • very powerful and flexible. Supports POP3 and IMAP
    • well documented (lots of books on setting up sendmail)
    • long track record (first version appeared in early '80s)
    • tedious to set up (lots of cryptic configuration files)
    • free
    • www.sendmail.org
mail servers qmail 2
Mail Servers (qmail)-2
  • qmail is probably the most popular alternative to sendmail in the UNIX world
    • perhaps more secure than sendmail (at least older versions of sendmail)
    • Easier to set up and administer than sendmail
    • pretty good documentation (several books written on qmail in the past few years)
    • free
    • http://www.qmail.org/top.html
mail servers ms exchange 2
Mail Servers (MS Exchange)-2
  • MS Exchange is widely used in the Windows world, especially in corporate environments that use MS Office (and hence MS Outlook)
    • Expensive
    • Integrated into MS Active Directory
    • GUI administration tools are easier to learn for Windows people
  • MS Outlook is a powerful and slick email program that will work with Exchange, sendmail, or qmail. It does, however, have a history of security vulnerabilities and some organizations refuse to use it because of that.
pop3 imap mapi 1
POP3, IMAP, MAPI -1
  • Currently, the most popular protocols are
    • POP3 (Post Office Protocol, version 3)
    • IMAP (Internet Message Access Protocol)
    • MAPI (Messaging Application Programming Interface--Microsoft Windows email interface)
slide9
POP3
  • POP3 is the oldest and most widely used. It was designed to support offline mail processing.
    • Mail is delivered to a server and a user's computer runs a mail client program to download any new mail
    • Once messages are delivered, they are generally deleted from the mail server
    • This minimizes disk space requirements for mail server, but ties the mail to a particular machine. If user goes to another computer, he can't access his mail
    • POP3 has limited support for reading mail online (and leaving the mail on the mail server)
    • Simpler protocol than IMAP makes it easier to implement. More POP3 mail clients available
slide10
IMAP
  • IMAP
    • Developed at University of Washington
    • Primarily used to access mail and leave it on the mail server. This allows users to access their mail from any computer
    • Requires more disk space to store email messages
    • Can work in "offline" mode like POP3
    • Easy to manage multiple mailboxes
    • Supports tagging emails with flags like "read", "deleted", "answered", etc.
slide11
MAPI
  • MAPI
    • Set of C functions (API) developed by Microsoft and supported in MS Exchange/Outlook
    • Also supported by Eudora Mail
    • For more info, type the following search string in Google:"MAPI site:msdn.microsoft.com"
apache james mail server
Apache James Mail Server
  • Apache has a free mail server called James
  • Supports POP3, SMTP, and NNTP
  • Download the binary file
    • .ZIP version (for Windows)
    • .TAR version (for Linux)
  • Uncompress it and then run “run.bat” (Windows) or “run.sh” (Linux) to start the mail server

Download from here:

http://james.apache.org/download.cgi

noaa mail server
NOAA Mail Server
  • You can use ESRL/NOAA’s email server

email.boulder.noaa.gov

mailProperties.setProperty("mail.smtp.host","email.boulder.noaa.gov");

  • This will work IF you send emails to @noaa.gov email addresses (like jeff.s.smith@noaa.gov)
  • When I tried to send an email to jeffssmith1@yahoo.com I got this error message

Invalid Address

Relaying not allowed: jeffssmith1@yahoo.com

using javamail 1
Using JavaMail -1
  • Once you have a mail server you can use (either James or another mail server), you can send emails through it by using JavaMail
  • In general, to send a plain text email using JavaMail, you do the following:
    • Get a mail session instance
    • Create a MimeMessage object (passing in the mail session instance into the constructor)
    • Set the MimeMessage object's properties (like the toAddress, fromAddress, message, etc.)
    • Send the message
getting a mail session
Getting a Mail Session
  • Get a mail session for the James mail server. If James is running on your own computer, your mail.smtp.host is localhost.
  • If your mail server is a remote computer, it might be something like “mailgate.fsl.noaa.gov”
  • Get a mail session for the James mail server

private Session getMailSession() throws Exception

{

Properties mailProperties = new Properties();

mailProperties.setProperty("mail.transport.protocol",

"smtp");

mailProperties.setProperty("mail.smtp.host",

"localhost");

return Session.getInstance(mailProperties, null);

}

plain text email example
Plain Text Email Example
  • Next, send your email using the mail session

MimeMessage msg = new MimeMessage(getMailSession());

msg.setFrom(new InternetAddress("bill.gates@msn.com"));

msg.addRecipient(Message.RecipientType.TO,

new InternetAddress("larry.ellison@oracle.com"));

msg.setSubject("RE: Oracle vs SQL Server");

msg.setText("SQL Server is better than Oracle");

Transport.send(msg);

exceptions and imports
Exceptions and imports
  • Your code which sends an email will need to catch the following checked exceptions:
    • Exception
    • MessagingException
    • AddressException
  • You should import the following packages:

import javax.mail.*;

import javax.mail.internet.*;

html email
HTML Email
  • You can also send HTML email with JavaMail. HTML email can be used to
    • Use different sizefonts
    • imbed images into your email
    • Use different colored text, bold, italic, etc.
html email1
HTML Email
  • With HTML email,
    • you set the mime message content type to "text/html"
    • call the setContent() method to set your html content
      • It helps to know a little HTML!
mail security
Mail Security
  • Virtually all mail servers require a username and password to receive email
  • Some mail servers require a username and password to send an email (by default, James does not).
    • This prevents spammers from hijacking the mail server to send unauthorized email
  • JavaMail supports this username/password authorization and authentication
    • To implement this, you get a transport object from the mail session and call the connect() method with the mail host, username, and password
    • See next slide for code example
html email example
HTML Email Example
  • Example of sending html message with an imbedded image using username/password authorization

MimeMessage msg = new MimeMessage(mailSession);

msg.setFrom(new InternetAddress("bill@msn.com"));

msg.addRecipient(Message.RecipientType.TO, new

InternetAddress(“tom@msn.com"));

msg.setSubject(subject);

String html = "<html><body><b>MY SPAM</b><br><img

src='http://www.wrfportal.org/images/NOAA_logo.jpg'>

</body></html>";

msg.setContent(html, "text/html");

Transport transport = mailSession.getTransport("smtp");

transport.connect("localhost","user", "passwd");

msg.saveChanges();

transport.sendMessage(msg, msg.getAllRecipients());

transport.close();

email attachments 1
Email attachments -1
  • To append an email attachment, you need to send a "multipart" message
    • Create your MimeMessage object as usual, setting the from address, to address, subject, etc...
    • Create a MimeBodyPart object for your main message and set its text (or content) to be your message
    • Create a MimeMultiPart object for your attachment and call its setContent() method to attach your file
    • Create a Multipart object and add both body parts to it.
    • Call your MimeMessage's setContent() method, passing in your Multipart object
    • Call Transport.send() to send the message
  • Whew!!!
email attachment example 1
Email attachment Example-1

MimeMessage msg = new MimeMessage(getMailSession());

msg.setFrom(new InternetAddress("bill.gates@msn.com"));

msg.addRecipient(Message.RecipientType.TO,

new InternetAddress("larry.ellison@oracle.com"));

msg.setSubject("RE: Oracle vs SQL Server");

//Create the main message (body) part

MimeBodyPart mainBodyPart = new MimeBodyPart();

mainBodyPart.setText("Here is my message");

email attachment example 2
Email attachment Example-2

//Create attachment body part

MimeBodyPart attachBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource("1.jpg");

attachBodyPart.setDataHandler(new DataHandler(source));

attachBodyPart.setFileName("1.jpg");

//Now create the multipart and add the parts

Multipart multipart = new MimeMultipart();

multipart.addBodyPart(mainBodyPart);

multipart.addBodyPart(attachBodyPart);

//add the multipart to the original Mime message

msg.setContent(multipart);

Transport.send(msg);

exercise 1
Exercise -1
  • Write a program in package gov.noaa.email that reads a list of email recipients from a disk file and then sends them each an email message.
  • Use your NOAA webmail account to test this (or you can use our Yahoo email account)
  • You'll need to:
    • Create a file and populate it with a list of email addresses (use your own email address or someone else in the class)
    • Send a single email to all the recipients you read from the db table.
    • If you are feeling ambitious, you can send an HTML email message.
    • Use an email client (NOAA webmail?) to verify message delivery
  • Extra credit: send an email attachment and write an Ant script for your project
javamail summary
JavaMail Summary
  • JavaMail is powerful with good support for things like HTML and attachments
  • But adding an attachment isn't as simple as it should be. A nice framework (or helper class) would be useful to simplify JavaMail code
  • JavaMail also supports
    • receiving email
    • administering mail servers

For an article on receiving email via JavaMail, see:

http://www.javaworld.com/javaworld/jw-10-2001/jw-1026-javamail-p2.html