Java training introduction to java mail
Download
1 / 26

Java Training Introduction to Java Mail - PowerPoint PPT Presentation


  • 129 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


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
Java training introduction to java mail

Java TrainingIntroduction to Java Mail

Written by Jeff Smith


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)


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


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.


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 [email protected])

  • When I tried to send an email to [email protected] I got this error message

    Invalid Address

    Relaying not allowed: [email protected]


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("[email protected]"));

    msg.addRecipient(Message.RecipientType.TO,

    new InternetAddress("[email protected]"));

    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("[email protected]"));

    msg.addRecipient(Message.RecipientType.TO, new

    InternetAddress(“[email protected]"));

    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("[email protected]"));

msg.addRecipient(Message.RecipientType.TO,

new InternetAddress("[email protected]"));

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


ad