11、JavaMail课件
- 格式:ppt
- 大小:361.00 KB
- 文档页数:28
【Java mail 入门教程】第一讲环境配置摘要:JavaMail API是读取、撰写、发送电子信息的可选包。
我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。
让我们看看JavaMail API是如何提供信息访问功能的吧!本教程主要以实践结合理论的方式来编写,内容通俗易懂!1、安装JavaMail为了使用JavaMail API,需要从/products/javamail/downloads/index.html下载文件名格式为javamail-[version].zip的文件(这个文件中包括了JavaMail实现),并将其中的mail.jar文件添加到CLASSPATH中。
这个实现提供了对SMTP、IMAP4、POP3的支持。
注意:我们还需要安装JavaBeans Activation Framework,因为这个框架是JavaMail API所需要的。
如果我们使用J2EE的话,那么我们并无需单独下载JavaMail,因为它存在于J2EE.jar中,只需将J2EE.jar加入到CLASSPA TH即可。
(建议独立下载mail.jar,因为j2ee.jar 里面的mail.jar缺少某些文件)2.安装JavaBeans Activation Framework (JAF)从/technetwork/java/jaf11-139815.html下载JavaBeans Activation Framework,并将其添加到CLASSPA TH中。
此框架增加了对任何数据块的分类、以及对它们的处理的特性。
这些特性是JavaMail API需要的。
虽然听起来这些特性非常模糊,但是它对于我们的JavaMail API来说只是提供了基本的MIME类型支持。
到此为止,我们应当把mail.jar和activation.jar都添加到了CLASSPA TH中。
A、邮件中的附件附件是邮件消息的相关资源,如通常不包含在消息正文里文本文件、电子表格或图像等。
可以用JavaMail API 将资源attach(附加)到您的消息上,就可以在收到消息时得到。
附件的发送:发送附件非常像转发消息。
您建立各部分以组成完整消息。
完成第一部件,即消息正文后,您添加其它部件,其中每个DataHandler 都代表附件,而不是转发消息情况下的共享处理程序。
如果从文件中读附件,附件的数据源是FileDataSource。
而如果从URL 中读时,附件的数据源是URLDataSource。
一旦存在DataSource,只要先把它传递给DataHandler 构造器,最后再用setDataHandler() 把它附加到BodyPart。
假定您要保留附件的原始文件名,最终要做的是用BodyPart 的setFileName() 方法设置与附件相关的文件名。
附件的获取:从消息中获取附件比发送它们棘手些,因为MIME 没有简单的关于附件的概念。
当消息包含附件时,消息的内容是个Multipart 对象。
接着,您需要处理每个Part,获取主要内容和附件。
标有从part.getDisposition() 获得的Part.ATTACHMENT 配置(disposition)的部件(Part)无疑就是附件。
但是,没有配置(以及一个非文本MIME 类型)和带Part.INLINE 配置的部件也可能是附件。
当配置要么是Part.ATTACHMENT,要么是Part.INLINE 时,这个消息部件的内容就能被保存。
只要用getFileName() 和getInputStream() 就能分别得到原始文件名和输入流。
B、相关的类B.1、javax.activation.DataHandlerpublic class DataHandler implements TransferableDataHandler 类为在多种不同源和格式下可用的数据提供一致的接口。
J2EE 课程设计实训项目——《蓝梦网上商城》——应用Spring JavaMail 邮件抽象实现项目中的邮件自动发送功能1.1.1应用Spring JavaMail邮件抽象实现项目中的邮件自动发送功能1、Spring JavaMail概述E-mail是一个优秀的通知系统,也充当一个基本的工作流系统的角色。
Spring使发送邮件变得非常容易,它隐藏底层邮件系统的复杂性。
Spring邮件支持的主要接口叫做MailSender。
它还提供了一个SimpleMailMessage类来封装一条消息的公共属性(from, to, subject, message)。
如果我们想发送带附件的邮件,则可以用MimeMessagePreparator来创建和发送消息。
下面给出一个在本项目中的实现示例。
2、修改webShopUserInfoIoC.xml文件以添加与Spring邮件抽象实现相关的组件(1)定义一个org.springframework.mail.javamail.JavaMailSenderImpl组件对象<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value=""/><property name="username" value="trainict"/><property name="password" value="6407"/></bean>(2)并将该组件对象注入到我们的Spring事件广播的响应的组件SpringActionEventResponse类中<bean id="springActionEventResponse" class="com.px1987.webshop.business.springevent.SpringActionEventResponse"> <property name="mailSender"><ref bean="mailSender"/></property></bean>(3)到目前为止的配置示例如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "/dtd/spring-beans-2.0.dtd"><beans><bean id="userInfoCRUDImple" class="erInfoCRUDImple" scope="prototype"> </bean><bean id="orderInfoCRUDImple" class="com.px1987.webshop.dao.crud.OrderInfoCRUDImple" scope="prototype"> </bean><bean id="goodsInfoCRUDImple" class="com.px1987.webshop.dao.crud.GoodsInfoCRUDImple" scope="prototype"> </bean><bean id="userInfoDAOServiceImple" class="erInfoDAOServiceImple" scope="prototype"> <property name="userInfoCRUDImple"><ref bean="userInfoCRUDImple"/></property><property name="orderInfoCRUDImple"><ref bean="orderInfoCRUDImple"/></property><property name="goodsInfoCRUDImple"><ref bean="goodsInfoCRUDImple"/></property></bean><bean id="orderInfoDAOServiceImple" class="com.px1987.webshop.service.OrderInfoDAOServiceImple" scope="prototype"> <property name="userInfoCRUDImple"><ref bean="userInfoCRUDImple"/></property><property name="orderInfoCRUDImple"><ref bean="orderInfoCRUDImple"/></property><property name="goodsInfoCRUDImple"><ref bean="goodsInfoCRUDImple"/></property></bean><bean id="goodsInfoDAOServiceImple" class="com.px1987.webshop.service.GoodsInfoDAOServiceImple" scope="prototype"> <property name="userInfoCRUDImple"><ref bean="userInfoCRUDImple"/></property><property name="orderInfoCRUDImple"><ref bean="orderInfoCRUDImple"/></property><property name="goodsInfoCRUDImple"><ref bean="goodsInfoCRUDImple"/></property></bean><bean id="userInfoManageImple" class="erInfoManageImple"scope="prototype"><property name="userInfoDAOServiceImple"><ref bean="userInfoDAOServiceImple"/></property><property name="springActionEventResponse"><ref bean="springActionEventResponse"/></property></bean><bean id="springActionEventResponse"class="com.px1987.webshop.business.springevent.SpringActionEventResponse"> <property name="mailSender"><ref bean="mailSender"/></property></bean><bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value=""/><property name="username" value="trainict"/><property name="password" value="12345678"/></bean></beans>3、在我们的Spring事件广播的响应的组件SpringActionEventResponse类中增加一个名称为mailSender的JavaMailSenderImpl成员属性对象,并提供set方法import org.springframework.mail.javamail.JavaMailSender;…private JavaMailSender mailSender=null;public void setMailSender(JavaMailSender mailSender){this.mailSender = mailSender;}4、编程我们的邮件发送功能代码package com.px1987.webshop.business.springevent;import org.springframework.context.ApplicationListener;import org.springframework.context.ApplicationEvent;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.MailException;import org.springframework.mail.javamail.MimeMessagePreparator;import javax.mail.internet.MimeMessage;import javax.mail.MessagingException;import javax.mail.internet.InternetAddress;import javax.mail.Message;public class SpringActionEventResponse implements ApplicationListener { private JavaMailSender mailSender=null;public void setMailSender(JavaMailSender mailSender) {this.mailSender = mailSender;}String userMail=null;String userName=null;String userPassWord=null;public SpringActionEventResponse() {}public void onApplicationEvent(ApplicationEvent applicationEvent) {//识别事件源对象是否为指定的事件类型if (applicationEvent instanceof SpringActionEvent) {userMail=((SpringActionEvent)applicationEvent).getOneUserInfo().getUserMail();userName=((SpringActionEvent)applicationEvent).getOneUserInfo().getUserName();userPassWord=((SpringActionEvent)applicationEvent).getOneUserInfo().getUserPassWord();MimeMessagePreparator preparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws MessagingException{mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(userMail));mimeMessage.setFrom(new InternetAddress("trainict@"));mimeMessage.setText("您在本系统中的注册用户名称为:"+userName+ "密码为:"+userPassWord);}};try{mailSender.send(preparator);}catch (MailException ex) {System.err.println("邮件发送过程中出现了错误:"+ex.getMessage());return;}System.out.println("我们已经将您的ID及密码等信息发送到您的邮箱"+userMail);}}}。
设计模式在软件工程中占有重要地位,而JavaMail是Java平台的一个扩展,为管理电子邮件提供了统一的应用编程接口。
本文讨论Factory Method设计模式在Javamail中的应用。
1、模式简介模式的概念最早是出现在城市建筑领域的。
lexander的一本关于建筑的书中明确的给出了模式的概念,用来解决在建筑中的一些问题。
后来,这个概念逐渐的被计算机科学所采纳。
《Design Patterns:Elements of ReusableObject-Oriented Software》[1](以下简称《设计模式》)则堪称设计模式领域的经典书籍之一。
它开创了软件工程领域的模式化进程。
设计模式的简单定义就是对于一类重复出现的问题的可重用的解决方案。
在软件工程中一个设计模式解决一类软件设计问题。
设计模式中许多方法其实很早就出现了,并且在应用中也比较多。
但是直到《设计模式》出来之前,并没有一种统一的认识。
或者说,那时候并没有对模式形成一个概念。
这些方法还仅仅是处在经验阶段,并没有能够被系统的整理,形成一种理论。
每一个设计模式都系统的命名,解释和评价了面向对象系统中的一个重要的和重复出现的设计。
这样,我们只要搞清楚这些设计模式,就可以完全或者说很大程度上吸收了那些蕴含在模式中的宝贵的经验,对面向对象的系统能够有更为完善的了解。
更为重要的是,这些模式都可以直接用来指导面向对象系统中至关重要的对象建模问题。
如果有相同的问题背景,那么很简单,直接套用这些模式就可以了。
这可以省去你很多的工作。
在《设计模式》一书中涉及到23个模式,被分类为创建型模式(Creational Patterns),结构型模式(Structural Patterns)和行为模式(Behavioral Patterns),分别从对象的创建,对象和对象间的结构组合以及对象交互这三个方面为面向对象系统建模方法给予了解析和指导。
其中创建型设计模式(Creational Patterns)描述怎样创建一个对象。