




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
A、简介JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Store,Transport, Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。B、javaMail常用类B .1、Propertiesjava.util.Properties:JavaMail需要Properties来创建一个session对象。它将寻找字符串mail.smtp.host,属性值就是发送邮件的主机,如:Properties props = new Properties ();props.put(mail.smtp.host, );/可以换上你的smtp主机名。B .2、SessionJavax.mail.Session:Session类定义了一个基本邮件会话(session),是Java Mail API最高层入口类。所有其它类都是经由这个session才得以生效。Session对象用Java.util.Properties对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其它信息。这个Session类代表JavaMail中的一个邮件session。每一个基于JavaMail的应用程序至少有一个session但是可以有任意多的session。Session对象需要知道用来处理邮件的SMTP服务器。为了做到这一点,你可以参照下面的例子用Properties 来创建一个Session 对象Session sendMailSession;sendMailSession = Session.getInstance(props, null);B .3、Message、MimeMessageJavax.mail.Message、javax.mail.MimeMessage:一旦获得Session对象,就可以继续创建要发送的消息。这由Message类来完成。因为Message是个抽象类,必需用一个子类,多数情况下为 Jernet.MimeMessage。MimeMessage是个能理解MIME类型和头的电子邮件消息,正如不同RFC中所定义的。虽然在某些头部域非ASCII字符也能被译码,但Message头只能被限制为用 US-ASCII 字符。Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。Message newMessage = new MimeMessage(sendMailSession);B .4、TransportJavax.mail.Transport:消息发送的最后一部分是使用Transport类。这个类用协议指定的语言发送消息(通常是SMTP)。它是抽象类,它的工作方式与Session有些类似。仅调用静态send() 方法,就能使用类的缺省版本:Transport.send(message)。或者,读者也可以从针对自己的协议的会话中获得一个特定的实例,传递用户名和密码(如果不必要就不传),发送消息,然后关闭连接。邮件是既可以被发送也可以被受到。JavaMail使用了两个不同的类来完成这两个功能:Transport和Store。Transport是用来发送信息的,而Store用来收信。Transport transport;transport = sendMailSession.getTransport(smtp);用JavaMail Session对象的getTransport方法来初始化Transport。传过去的字符串申明了对象所要使用的协议,如smtp。这将为我们省了很多时间。因为JavaMail以境内置了很多协议的实现方法。注意: JavaMail并不是绝对支持每一个协议,目前支持IMAP、 SMTP和 POP3。B .5、StoreJavax.mail.Store:Store类实现特定邮件协议上的读、写、监视、查找等操作。通过Javax.mail.Store类可以访问Javax.mail.Folder类。Store store=s.getSorte(pop3); store.connect(popserver,username,password); B .6、FolderJavax.mail.Folder:Folder类用于分级组织邮件,并提供照Javax.mail.Message格式访问email的能力。Folder folder=store.getFolder(INBOX);folder.open(Folder.READ_ONLY);B .7、Address、InternetAddressJavax.mail.Address、Jernet.InternetAddress:一旦您创建了Session 和 Message,并将内容填入消息后,就可以用 Address 确定信件地址了。和 Message 一样,Address 也是个抽象类。您用的是 Jernet.InternetAddress 类。B .8、AuthenticatorJavax.mail. Authenticator:与 J 类一样,JavaMail API 也可以利用 Authenticator 通过用户名和密码访问受保护的资源。对于JavaMail API来说,这些资源就是邮件服务器。JavaMail Authenticator在Javax.mail包中,而且它和J中同名的类Authenticator不同。两者并不共享同一个Authenticator,因为JavaMail API 用于Java 1.1,它没有 J 类别。要使用 Authenticator,先创建一个抽象类的子类,并从 getPasswordAuthentication() 方法中返回 PasswordAuthentication 实例。创建完成后,您必需向 session 注册 Authenticator。然后,在需要认证的时候,就会通知 Authenticator。您可以弹出窗口,也可以从配置文件中(虽然没有加密是不安全的)读取用户名和密码,将它们作为 PasswordAuthentication 对象返回给调用程序。B .9、Multipart、MimeMultpartjavax.mail.Multipart、javax.mail.Internet.MimeMultpart:一般保存电子邮件内容的容器是Multipart抽象类,它定义了增加和删除及获得电子邮件不同部分内容的方法。由于Multipart是抽象类,我们必须为它使用一个具体的子类,JavaMail API提供javax.mail.Internet.MimeMultpart类来使用MimeMessage对象。MimeMultipart multipart=new MimeMultipart();注:我们使用MimeMultipart对象的一个方法是addBodyPart(),它在我们的电子邮件内容里添加BodyPart对象。消息可以有很多部分,一个BodyPart可以代表一个部分。B .10、BodyPart 、MimeBodyPartjavax.mail.BodyPart、javax.mail.Internet.MimeBodyPart:MimeBodyPart是BodyPart具体用于mimeMessage的一个子类。MimeBodyPart对象代表一个MimeMessage对象内容的一部分。每个MimeBodyPart被认为有两部分:MIME类型 和匹配这个类型的内容MimeBodyPart mdp=new MimeBodyPart();String text=Hello JavaMail!;mdp.setContent(text,text/plain);/定义MIME类型为text/plain,并设置MimeBodyPart的内容C、应用C.1、通过SMTP发送一封邮件package com.test;import java.util.Date;import java.util.Properties;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import ernet.InternetAddress;import ernet.MimeBodyPart;import ernet.MimeMessage;import ernet.MimeMultipart;public class SimpleSender public static void main(String args) try String smtpServer = 54;String to = ;String from = ;String subject = test mail;String body = test mail;String msgAttachment = This is an attachment string!;send(smtpServer, to, from, subject, body, msgAttachment); catch (Exception ex) System.out.println(ex.toString();System.exit(0);/ 发送一封简单的邮件public static void send(String smtpServer, String to, String from,String subject, String body) try Properties props = System.getProperties();props.put(mail.smtp.host, smtpServer);/* * java 通过System.getProperties()获取系统参数, * 为Sesion.getDefultInstance准备参数。 */Session session = Session.getDefaultInstance(props, null);/* * 首先要一个emailsession(java.mail.Session),没有它什么都做不了。 * 调用了Sesion.getDefultInstance()来得到一个共享session。 * 建立一个session需要设置一些属性。 如果你通过SMTP发送消息, * 那么至少需要设置mail.smtp.host属性。 * 在API文档中你可以找到其它的属性。 */Message msg = new MimeMessage(session);/* * 一旦获得Session对象,就可以继续创建要发送的消息。 * 可以设置email地址信息、主题、正文、头信息、日期、复制(CC)收件人。 */msg.setFrom(new InternetAddress(from);/ 发件人地址InternetAddress address = new InternetAddress(to) ;msg.setRecipients(Message.RecipientType.TO, address);/ 收件人地址,可以是一个或多个。msg.setSubject(subject);/ 邮件主题msg.setSentDate(new Date();/ 发送时间msg.setText(body);/ 邮件正文的内容msg.setHeader(X-Mailer, LOTONtechEmail);Transport.send(msg);/* * 通过javax.mail.Transport类发送消息。 */System.out.println(Message sent OK.); catch (Exception ex) ex.printStackTrace();/ 发送一封带有附件的邮件public static void send(String smtpServer, String to, String from,String subject, String body, String msgAttachment) try Properties props = System.getProperties();props.put(mail.smtp.host, smtpServer);Session session = Session.getDefaultInstance(props, null);Message msg = new MimeMessage(session);msg.setFrom(new InternetAddress(from);InternetAddress address = new InternetAddress(to) ;msg.setRecipients(Message.Recipient
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论