J2EE课件-第9章_Java_Mail_编程(精品).ppt
《J2EE课件-第9章_Java_Mail_编程(精品).ppt》由会员分享,可在线阅读,更多相关《J2EE课件-第9章_Java_Mail_编程(精品).ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章第九章 Java Mail 编程编程www.wetherm-1JavaMail基础知识2发送简单邮件 3发送SMTP身份认证的邮件 4接收邮件 5邮件附件的处理 本章主要内容1JavaMail基础知识 2发送简单邮件 3发送SMTP身份认证的邮件 4接收邮件 5邮件附件的处理 常见电子邮件协议常见电子邮件协议 n nSMTP(Simple Mail Transfer Protocol,简单邮件传输协议)n nPOP(Post Office Protocol,邮局协议)n nIMAP(Internet Message Access Protocol,Internet 消息访问协议)n nM
2、IME(Multipurpose Internet Mail Extensions,多用途Internet 邮件扩展标准)不是邮件传输协议,它只定义了需要传输的消息、附件及其他类型数据的格式。n nJava Mail体系可以分为三层:n n抽象层抽象层n nInternet Internet 邮件实现层邮件实现层n n协议实现层协议实现层 n nJava MailJava Mail抽象层:该层定义了用于邮件处理功能的抽象层:该层定义了用于邮件处理功能的抽象类、接口和抽象方法,所有的邮件系统都支抽象类、接口和抽象方法,所有的邮件系统都支持这些功能,它独立于供应商和协议消息。抽象持这些功能,它独立
3、于供应商和协议消息。抽象层位于层位于Java Mail Java Mail 顶级包(即顶级包(即javax.mailjavax.mail)内。)内。n n Internet Internet 邮件实现层:该层实现了部分抽象层元素,邮件实现层:该层实现了部分抽象层元素,它遵循它遵循Internet Internet 标准标准RFC822RFC822和和MIMEMIME。Internet Internet 邮邮件实现层所定义的类和接口大多位于件实现层所定义的类和接口大多位于javax.mail.internetjavax.mail.internet 包内。包内。n n协议实现层:该层由服务提供商实
4、现对特定协议协议实现层:该层由服务提供商实现对特定协议的支持,如的支持,如SMTPSMTP、POPPOP、IMAP IMAP 和和NNTPNNTP。Sun Sun 为为开发者提供了很完备的一组协议的支持。开发者提供了很完备的一组协议的支持。n n核心核心Java Mail API Java Mail API 可以分为两部分,一部分由七个可以分为两部分,一部分由七个主要对象组成:主要对象组成:SessionSession、MessageMessage、AddressAddress、AuthenticatorAuthenticator、TransportTransport、Store Store
5、和和FolderFolder,利用这,利用这些对象可以完成包括发送消息、检索消息、删除些对象可以完成包括发送消息、检索消息、删除消息、认证、回复消息、转发消息、管理附件、消息、认证、回复消息、转发消息、管理附件、处理基于处理基于HTML HTML 文件格式的消息及搜索或过滤邮文件格式的消息及搜索或过滤邮件列表等任务件列表等任务 n n核心核心Java Mail API Java Mail API 的另一部分的主要接口和类包括的另一部分的主要接口和类包括PartPart、MessageMessage、BodypartBodypart、MultipartMultipart、MimePartMime
6、Part、MimeMessageMimeMessage、MimiBodypartMimiBodypart 和和MimeMultipartMimeMultipart,可,可以用这些类和接口完成电子邮件的阅读、撰写等以用这些类和接口完成电子邮件的阅读、撰写等任务。任务。1JavaMail基础知识2发送简单邮件 3发送SMTP身份认证的邮件 4接收邮件 5邮件附件的处理 程序程序82:SendMail.java(片断)(片断)n ntrytryn nProperties props=new Properties();Properties props=new Properties();n nSessi
7、on Session sendMailSessionsendMailSession;n nStore Store storestore;n nTransport Transport transporttransport;n nsendMailSessionsendMailSession=Session.getInstance(propsSession.getInstance(props,null);,null);n nprops.put(mail.smtp.hostprops.put(mail.smtp.host,host);,host);n nMessage Message newMessa
8、genewMessage=new =new MimeMessage(sendMailSessionMimeMessage(sendMailSession););n nnewMessage.setFrom(newnewMessage.setFrom(new InternetAddress(request.getParameter(fromInternetAddress(request.getParameter(from););n nnewMessage.setRecipient(Message.RecipientType.TOnewMessage.setRecipient(Message.Rec
9、ipientType.TO,new,new InternetAddressInternetAddress(request.getParameterrequest.getParameter(to);(to);n nnewMessage.setSubject(request.getParameter(subjectnewMessage.setSubject(request.getParameter(subject););n nnewMessage.setSentDate(newnewMessage.setSentDate(new Date();Date();n nnewMessage.setTex
10、t(request.getParameter(textnewMessage.setText(request.getParameter(text););n nTransport.send(newMessageTransport.send(newMessage););n n/显示发送成功的提示显示发送成功的提示n n out.printlnout.println(the Email send(the Email send sucesssucess!);!);Java Mail API 的中文问题。的中文问题。n n如果开发者使用setSubject()方法直接设定中文的主题或者使用setText(
11、)方法直接指定中文内容,那么在使用Outlook 等客户端软件查看邮件时客户有可能看到的将是一团乱码。n n解决方案?只需要指定邮件主题和邮件正文的字符集为“ISO-8859-1”即可。1JavaMail基础知识 2发送简单邮件 3发送SMTP身份认证的邮件 4接收邮件 5邮件附件的处理 n n为了防止恶意用户利用SMTP 服务器进行发送垃圾邮件等破坏活动,SMTP 服务器一般需要身份验证。只有通过了身份验证的用户才有权利利用SMTP 服务器发送邮件。n njavaMailjavaMail 用类用类javax.mail.Authenticatorjavax.mail.Authenticator
12、来进行用户认证。验来进行用户认证。验证信息需要通过证信息需要通过Session Session 传给邮件服务器,所以传给邮件服务器,所以Session Session 对对象的象的getInstancegetInstance 有以下的变形有以下的变形n nstatic Session static Session getInstance(PropertiesgetInstance(Properties prop,Authenticatorprop,Authenticator auth);auth);n nstatic Session static Session getDefaultInsta
13、nce(PropertiesgetDefaultInstance(Properties prop,Authenticatorprop,Authenticator auth);auth);n n其中的其中的Authenticator Authenticator 负责密码校验。如果不需要验证身份,负责密码校验。如果不需要验证身份,就用就用null null 做第二个参数,或者直接用单参数的做第二个参数,或者直接用单参数的getInstancegetInstance。如果如果Session Session 是需要密码的,那么是需要密码的,那么Session Session 会自动发出如下会自动发出如
14、下调用调用n njavax.mail.PasswordAuthenticationjavax.mail.PasswordAuthentication getPasswordAuthenticationgetPasswordAuthentication();();n nPasswordAuthenticationPasswordAuthentication 只是一个包装类,里面包了用户名只是一个包装类,里面包了用户名和密码。因此如果要实现和密码。因此如果要实现SMTPSMTP认证的邮件发送,必须首认证的邮件发送,必须首先自己定义一个继承先自己定义一个继承javax.mail.Authentica
15、tiorjavax.mail.Authenticatior的类。的类。n n程序程序8 84:Auth.java4:Auth.javan nimport import javax.mail.Authenticatorjavax.mail.Authenticator;n nimport import javax.mail.PasswordAuthenticationjavax.mail.PasswordAuthentication;n npublic class Auth extends Authenticator public class Auth extends Authenticator
16、n nString username=;String username=;n nString password=;String password=;n n public public Auth(StringAuth(String username,Stringusername,String password)password)n n this.usernamethis.username=username;=username;n n this.passwordthis.password=password;=password;n n n npublic public PasswordAuthent
17、icationPasswordAuthentication getPasswordAuthenticationgetPasswordAuthentication()()n n return new return new PasswordAuthenticationPasswordAuthentication(username,password);(username,password);n n n n 程序程序85:sendAuthmail.java(片段)(片段)n n/初始化收件人邮件地址、发件人邮件地址和主机名,下面的各初始化字符串均为任意设置初始化收件人邮件地址、发件人邮件地址和主机名,
18、下面的各初始化字符串均为任意设置n nString to=String to=;n nString from=String from=;n nString host=127.0.0.1;String host=127.0.0.1;n n/创建一个属性对象创建一个属性对象n nProperties props=new Properties();Properties props=new Properties();n n/指定发送邮件服务器,使用指定发送邮件服务器,使用smtpsmtp 协议协议n nprops.put(mail.smtp.hostprops.put(mail.smtp.host,h
19、ost);,host);n nprops.put(mail.smtp.auth,trueprops.put(mail.smtp.auth,true););n n Auth au=new Auth(hyl,123456);Auth au=new Auth(hyl,123456);n n/获取会话获取会话n nSession Session sessionsession=Session.getInstance(propsSession.getInstance(props,au);,au);n ntry try n n/创建消息,设置邮件发件人地址、收件人地址、主题创建消息,设置邮件发件人地址、收件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 课件 _Java_Mail_ 编程 精品
限制150内