Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sending and Receiving s

Similar presentations


Presentation on theme: "Sending and Receiving s"— Presentation transcript:

1 Sending and Receiving Emails
Java Mail API Sending and Receiving s

2 Mail API Java Mail API is an easy and standard way of sending and receiving s Java Mail API supports following Protocols: SMTP POP IMAP MIME

3 SMTP Simple Mail Transfer Protocol
Usually used for sending s from clients Also used for relaying s from one server to another

4 SMTP

5 POP Post office protocol Currently Version 3 in use (Pop3 RFC1939)
Used at client side to check the s that are received in the mailbox for a user

6 IMAP Stands for Internet Message Access Protocol
Currently IMAP4 (RFC2060) in use More advanced protocol for access that allows multiple folder management on server, periodic backups and several other advanced features.

7 MIME Multi-purpose Internet Mail Extention
Defines the contents that are to be transferred in an

8 What do you need to use Java Mail?
You should have following two APIs Java Mail API JavaBeans Activation Framework(JAF) JAF is included in JDK6

9 Mail API As the name says, is used for sending and receiving emails.
Mail API requires JavaBeans Activation Framework

10 JAF JavaBeans Activation Framework
Helps programmers to Determine the type of an arbitrary piece of data Encapsulates access to it Discovers operations that can be performed on it

11 Where to get? Both APIs can be downloaded from http://java.sun.com
Also placed on \\shares\teachers\basit\shared docs\aip\APIs

12 How to Install? Un-zip the javamail.zip and jaf.zip into some folder
Put mail.jar from javamail folder to the classpath Put activation.jar from jaf folder to classpath

13 Java Mail classes You must know following classes before you start
Session Message Address Transport Store Folder

14 javax.mail.Session Defines a basic mail session
Everything in mail api works due to this session

15 javax.mail.Message Represents an message that is either created to be sent to the recipient or is received from someone. Message is an Abstract class MimeMessage is the sub-class of message that understands most MIME types and is most commonly used for handling

16 javax.mail.Address Represents an email addres
Address is an abstract class javax.mail.Internet.InternetAddress is the sub-class of Address

17 Message Representation

18 Transport This class speaks the protocol specific language to send messages. (Usually SMTP)

19 Store and Folder When receiving email We create a session
Connect to a store with our username and password Get specific folders (usually inbox) And start receiving Message objects

20 Sending an Email //Create properties object
Properties p = System.getProperties(); p.put("mail.smtp.host", " "); // Get session Session s = Session.getDefaultInstance(p,null);

21 Sending an Email (cont)
Message m = new MimeMessage(s); InternetAddress to = new InternetAddress from = new "Bill Gates"); m.setContent("yeah this is the body", "text/plain"); m.setFrom(from); m.setRecipient(Message.RecipientType.TO, to); m.setSubject("de subject"); Transport.send(m);

22 Checking Mails Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("pop3"); store.connect(host, username, password); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY);

23 Checking Mails(cont) Message message[] = folder.getMessages();
for (int i=0, n=message.length; i<n; i++) { System.out.println(i + ": " message[i].getFrom()[0] + "\t\t" + message[i].getSubject()); } folder.close(false); store.close();

24 Output 0: Syed Basit <basit@ucp.edu.pk> test 1
1: de subject 2: de subject 3: de subject 4: de subject 5: Bill Gates de subject

25 Let’s Try it out!!! Send email using Gmail SMTP server
Set Mail content type (text/plain)

26 HTML You can also send HTML with JavaMail. HTML can be used to Use different size fonts imbed images into your Use different colored text, bold, italic, etc.

27 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!

28 Mail Security Virtually all mail servers require a username and password to receive Some mail servers require a username and password to send an (by default, James does not). This prevents spammers from hijacking the mail server to send unauthorized 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

29 HTML Email Example MimeMessage msg = new MimeMessage(mailSession);
Example of sending html message with an imbedded image using username/password authorization MimeMessage msg = new MimeMessage(mailSession); msg.setFrom(new msg.addRecipient(Message.RecipientType.TO, new msg.setSubject(subject); String html = "<html><body><b>MY SPAM</b><br><img src=' </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();

30 MultiPart Representation

31 javax.Activation.DataSource
Interface that allows access to file type and to streams that can manipulate the file public String getContentType() returns the name of the MIME file type Implemented by javax.Activation.FileDataSource Used by JavaMail to create and retrieve attachments Constructors FileDataSource(File file) FileDataSource(String filename)

32 javax.Activation.DataHandler
Wrapper for DataSource objects so that the user does not need to manipulate the bytes for each file Constructors DataHandler(DataSource ds) DataHandler(Object obj, String mimeType) Public Object getContent() Returns the data as the object that represents its content type (ie runing this method on a text message returns a String)

33 javax.mail.Part Revisited
Allows manipulation of DataHandlers public void setDataHandler(DataHandler dh) public DataHandler getDataHandler() Other methods abstract user away from need to directly manipulate DataHandler public void setContent(Object object, String contentType) public Object getContent()

34 javax.mail.MimeBodyPart
Implements the Part interface (indirectly through a few abstract classes) Contains the content for a single part of an message Uses several methods to manipulate content directly or through DataHandler or streams Key Methods public void setText(String text): for text/plain content, makes a String into the message content public void setDataHandler(DataHandler dh) sets the content using a DataHandler (which may be text or any other permitted content) public void setFileName(String filename) sets the filename associated with the content, if the content represents a file

35 Javax.mail.Multipart Container that holds multiple parts
Each part is indexed, starting with 0 A Multipart object may be a part within another Multipart object Key Methods public void addBodyPart(BodyPart part) public void addBodyPart(BodyPart part, int index) public int getCount() returns the number of BodyPart objects

36 attachments -1 To append an 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 MimeBodyPart 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!!!

37 Email attachment Example-1
MimeMessage msg = new MimeMessage(getMailSession()); msg.setFrom(new msg.addRecipient(Message.RecipientType.TO, new msg.setSubject("RE: Oracle vs SQL Server"); //Create the main message (body) part for text MimeBodyPart mainBodyPart = new MimeBodyPart(); mainBodyPart.setText("Here is my message");

38 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);


Download ppt "Sending and Receiving s"

Similar presentations


Ads by Google