TP4JavaMail和Servlet.ppt_第1页
TP4JavaMail和Servlet.ppt_第2页
TP4JavaMail和Servlet.ppt_第3页
TP4JavaMail和Servlet.ppt_第4页
TP4JavaMail和Servlet.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章,JavaMail 和 Servlet,2,回顾,会话跟踪允许服务器跟踪同一客户端作出的连续请求 HttpServletRequest 接口的 getSession( ) 方法用于创建会话 不同的会话跟踪技术包括URL 重写、Cookie 和隐藏表单域 运行于同一服务器上的 Servlet 可以使用 Servlet 间通信方法进行通信 Servlet 上下文中可以存储共享对象,3,目标,使用 JavaMail API 描述 JavaMail 会话和消息 使用 Transport 对象 创建 Send Mail Servlet 描述 Web Mail Servlet,4,Java Mail web,通过一个Java Mail Web应用程序,客户可以访问Mail服务器上的邮件帐号,收发邮件和管理邮件夹 Email邮件服务器可以分为发送邮件的服务器和接收邮件的服务器 发送邮件服务器使用邮件发送协议,常用的是SMTP协议,所以通常也把发送邮件的服务器称为SMTP协议 接收邮件的服务器使用接收邮件协议,通常有POP3协议和IMAP协议,所以也叫做POP3服务器或IMAP服务器,5,E-mail系统,客户机A,E-Mail服务器A,E-Mail服务器B,客户机B,Internet,1,3,2 SMTP协议,pop3协议,客户机A向客户机B发送邮件的过程,6,收发邮件的过程,SMTP发送一封邮件的过程 客户端邮件首先到达邮件服务器,再由SMTP服务器负责传送到接收方的服务器。发送前发送服务器会与接收服务器联系,以确认接收方服务器是否已经准备好。如果已经准备好,则传送邮件;如果没有准备好,发送服务器会等待,并再一段时间后继续与接收方服务器进行联系,如果在规定的时间内联系不上,则发送消息到客户端说明情况 POP3收信的过程 用户通过自己熟悉的Email客户端软件,如foxmail,outlook等设置相应的参数后,就能够将所有的邮件从远程邮件服务器上下载到本地机上,演示:架设james服务器,7,JavaMail API,JavaMail API,抽象类的 集合,跨平台和跨协议,提供发送和接收 JavaMail 的功能,SMTP 服务器用于发送邮件,POP3 和 IMAP 服务器用于接收邮件,JavaMail 用于通过网络或 Internet 发送和接收邮件。 JavaMail API是SUN为java开发者提供的公用Mail API框架,它支持各种电子邮件通信协议,如IMAP,POP3,SMTP,为java应用程序提供email处理的接口,8,JavaMail 组件,JavaMail API,抽象类层,Internet 实现层,中间层,9,类结构,Message,Store,Session,Folder,JavaMail 类,开发javamail应用需要两个jar文件:mail.jar 和 activation.jar,jbuilder2006自带这两个文件,10,6种主要类,javax.mail.Session 定义了一个基本邮件会话,是javamail API最高层入口类。所有其他类都是经由这个Session才得以生效。Session对象从java.util.Properties对象中获取信息,如邮件服务器,接受邮件协议,用户名,密码等信息 javax.mail.Store 访问接收邮件服务器上邮件账户的入口,通过他的getFolder方法,可以访问特定的邮件夹 javax.mail.Folder 代表邮件夹,用于分级组织邮件,通过Folder类可以访问和设置邮件夹中的邮件。,11,6种主要类续,javax.mail.Message 该类封装了邮件信息,提供了。和设置邮件内容的方法。他是抽象类,常用子类为ernet.MimeMessage javax.mail.Address 代表电子邮件地址,与Message一样也是一个抽象类,常用子类为ernet.InternetAddress javax.mail.Transport 给据类型指定的邮件发送协议(通常是SMTP),通过指定的邮件发送服务器来发送邮件。Transport是抽象类,它提供一个静态方法send(Message)方法来发送邮件,12,消息过程,消息,传输,发件人发送一则消息,提交该消息,存储,接收消息,文件夹,将消息存储 Folder 对象中,消息,收件人访问该消息,网络,13,发送邮件步骤1,step1:设置javaMail的属性 创建javax.mail.Properties类的对象,该对象用来设置javaMail的属性,14,发送邮件步骤2,step2:创建Session实例 调用javax.mail.Session类的静态方法Session.getDefaultInstance获取Session实例,该方法根据已经配置好的javaMail属性来创建Session实例,15,Session 类,Session 类是最高级别的类 可以创建共享和非共享会话 会话不能有子类 存放支持特定协议的 Store 和 Transport 对象 能够控制和加载类 Session 对象具有用户配置属性,如主机名和用户名,16,用javamail进行认证发信1,当今mail服务器大多都是通过认证才能发信的 .这一点在开发要特别主意,否则发信会失败Javax.mail. Authenticator类: Authenticator 通过用户名和密码访问受保护的资源。对于JavaMail API 来说,这些资源就是邮件服务器 Step1:要使用 Authenticator,先创建一个抽象类的子类,并从 getPasswordAuthentication() 方法中返回 PasswordAuthentication 实例,17,用javamail进行认证发信2,18,用javamail进行认证发信3,Step2: Step3:,19,发送邮件步骤3,step3:创建邮件信息,即创建Message对象,20,Message 类,Message 类,标题属性,Part 接口定义的属性,Message 类添加的属性,主体内容,Data Handler 对象 消息的内容,21,发送邮件步骤4,step4:设置邮件体,22,登录邮件服务器,javax.mail.Store类 Store类实现特定邮件协议上的读、写、监视、查找等操作。通过Javax.mail.Store类可以访问Javax.mail.Folder类。 用法: Store store=s.getSorte(“pop3“);/s为一个邮件会话 store.connect(popserver,username,password);/通过你提供的pop地址,用户名和密码登录你的邮箱,23,Store 类,发件人,发送消息,Store Class类,收件人,收件人 Store,文件夹,消息,收件人登录,Store 验证用户并允许访问视图消息,24,Folder 类,Folder 类,子文件夹,包含消息,消息,抽象类,关闭状态,25,import java.util.*; import java.io.*; import javax.mail.*; import ernet.*; import javax.activation.*; public class writemessage static String msgText = “请在此处输入文本。 此文本为一字符串。“; public static void main(String args) Properties p = System.getProperties(); p.put(“mail.smtp.host“,host); Session s = Session.getDefaultInstance(p, null); Message m = new MimeMessage(s); Address from = new InternetAddress(String Sender_Email); m.setFrom(from); Address to = new InternetAddress(String Recipient_Email); m.setRecipients(Message.RecipientType.TO, to); m.setSubject(“您好,世界“); m.setSentDate(new Date(); m.setText(msgText); Transport trans = session.getTransport(“SMTP“); trans.send(m) ,发送 JavaMail,获得系统属性,设置连接协议并创建会话,新建 Message 对象,并为其设置属性,使用 Transport 类的 send() 方法将消息发送给收件人,26,创建一个 HTML 页面,用于接受邮件服务器名称、发件人地址、收件人地址、主题和消息的内容 单击提交之后将此 HTML 转发给 Servlet,Send Mail Servlet 2-1,演示:示例 1, Shop Stop 消息传递服务 欢迎来到 Shop Stop 邮件系统 请输入发送邮件的 所有详细信息 邮件服务器: ,27,创建一个 Servlet,用于接受 HTTP 页面上的邮件服务器名称、发件人地址、收件人地址、主题和消息的内容 发送邮件,Send Mail Servlet 2-2,演示:示例 2,public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); String smtpServer=request.getParameter(“txtserver“); String emailTo=request.getParameter(“txtto“); String fromEmail=request.getParameter(“txtfrom“); String subject=request.getParameter(“txtsubject“); String body=request.getParameter(“txtmessage“); try Properties props=new Properties(); props.put(“tocol“,“smtp“); props.put(“mail.smtp.host“,smtpServer); props.put(“mail.smtp.port“,“25“); Session mailsession=Session.getInstance(props); Message msg=new MimeMessage(mailsession); msg.setFrom(new InternetAddress(fromEmail); msg.setRecipients(Message.RecipientType.TO,InternetAddres s.parse(emailTo); msg.setSentDate(new Date(); msg.setSubject(subject); msg.setText(body); Transport.send(msg); msg.writeTo(System.out); out.println(“邮件已成功发送到 “ + emailTo); catch(Exception e) System.out.println(e); out.close(); ,28,import java.util.*; import java.io.*; import javax.mail.*; import ernet.*; import javax.activation.*; public class writemessage public static void main(String args) Session ses = Session.getDefaultInstance(System.getProperties(),null); Store store = ses.getStore(protocol); store.connect(hostname, username, password) Folder folder = store.getFolder(Inbox); folder.open(Folder.READ_WRITE); Message arraymessage = folder.getMessages(); for(int i=0, j=arraymessage.length; ij; i+) arraymessagei.writeTo(System.out); folder.close(false); store.close(); ,列出 Inbox 中的邮件,获得 Session 对象,获得 Store 对象并连接到 Store,获得默认文件夹并以 Read_Write 模式打开,获得数组中的所有消息,29,回复消息,Message 类包括 reply() 方法 reply() 方法将 boolean 作为参数 此方法将设置新消息的 setForm 或 replyTo 属性 Transport 对象的 Send() 方法用于发送邮件 回复消息的语法为: Message reply = object_message.reply(false); reply.setFrom(new InternetAddress(String email); reply.setText(String text); Transport.send(reply);,30,Multipart 消息,Multipart 消息是 Message 类的对象 内容类型设置为 Multipart Multipart 对象可以获得一个或多个 Bodypart Bodypart 对象可以获得一个新的 Multipart 对象或 DataHandler Bodypart 对象是 Part 接口的实例化 Multipart 消息可以包含纯文本消息或带有附件的 消息,31,Multipart 消息结构,Multipart 对象,Bodypart 对象,Bodypart 对象,Bodypart 对象,32,创建一个 HTML 页面,用于接受邮件服务器名称、发件人地址、收件人地址、主题、要附加的文件的位置和消息的内容 单击提交之后将 HTML 转发到 Servlet,发送带有附件的邮件,演示:示例 3, Shop Stop 消息传递服务 欢迎来到 Shop Stop 邮件系统 请输入发送邮件的 所有详细信息 服务器: ,33,创建一个 Servlet,用于接受服务器名称、发件人地址、收件人地址、要附加的文件的位置、主题和消息的内容 发送带有附件的消息,发送带有附件的邮件,演示:示例 4, Properties props = System.getProperties(); try props.put(“mail.smtp.host“, host); Session session = Session.getInstance(props, null); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to); message.setSubject(subject); MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论