第 11章 JavaMail与在线邮件
JSP 动态网页新技术 1
JavaMail
JavaMail并非 Java平台的预设 API,使用它之前必须预先下载
JavaMail API以及 JAF包 。
JavaMail下载地址
http://java.sun.com/products/javamail/index.jsp
JAF包 全名是 JavaBeans Activation Framework:
http://java.sun.com/products/javabeans/glasgow/jaf.html
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 2
JSP网页发送电子邮件发 送 邮 件 服 务 器
J S P 网 页
J a v a M a i l
J A F
浏 览 器 端网 络接 收 邮 件 服 务 器收 信 者第 11章 JavaMail与在线邮件
JSP 动态网页新技术 3
设定发送邮件服务器与传输协议
指定要寄信的邮件服务器地址,以及使用的通信协议,这个部份由 Java类
Properties的方法成员 put()所提供 。
put(Object key,Object value)
– Key代表所要 设定的属性种类,如果要 设定邮件服务器地址,key的值必须 指定 为 mail.host。
– Value则是地址字符串,如果是 通信协议,则该 值是
mail.transport.protocol,value值固定 为 smtp。
Properties对象的设定程序片段,首先建立所需的 Properties对象 theProperties
Properties theProperties = System.getProperties() ;
theProperties.put("mail.host","127.0.0.1") ;
theProperties.put("mail.transport.protocol","smtp") ;
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 4
收集寄信信息使用 MimeMessage必须提供的几项重要信息参数项目 方 法 说 明寄信地址 setFrom() 寄信人电子邮件地址收信地址 setRecipients() 收信人电子邮件地址信件主题 setSubject() 设定邮件主旨信件内容 setText() 设定邮件内容第 11章 JavaMail与在线邮件
JSP 动态网页新技术 5
收集寄信信息
MimeMessage的 设定,
MimeMessage theMessage = new
MimeMessage(theSession) ;
theMessage.setFrom(address) ;
theMessage.setRecipients
(RecipientType,address) ;
theMessage.setSubject(subject) ;
theMessage.setText(content,“GB2312") ;
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 6
收集寄信信息
RecipientType代表所要传送的类型 。
类 型 说 明
Message.RecipientType.TO 邮件收件人
Message.RecipientType.CC 副本收件人
Message.RecipientType.BCC 副本密件收件人第 11章 JavaMail与在线邮件
JSP 动态网页新技术 7
关于 Session
建立 MimeMessage对象之前,必须指定一个 Session对象 。
Session对象由 javax.mail.Session类的 getDefaultInstance()方法所建立 。
封装了 Properties对象所设定的邮件服务器地址以及通信协议信息 。
Session theSession = Session.getDefaultInstance(theProperties,null) ;
– theProperties为 Prperties对象 。
– theSession建立完成,直接将其传入 MimeMessage的建构式即可 。
– MimeMessage theMessage = new MimeMessage(theSession) ;
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 8
发送邮件基本的 设定 完成 以后,引用 Transport类 的 send()方法,并且传入
MimeMessage对象 theMessage,即可发送邮件 。
Transport.send(theMessage)
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 9
发送附件电子邮件的附件 功能由三 个类 來完成,分別是 MimeBodyPart、
FileDataSource以及 Multipart。
– MimeBodyPart用来处理附件内容 。
– FileDataSource是附件的文件来源 。
– Multipart整合已建立好的 MimeBodyPart,传送给 MimeMessage
对象 。
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 10
发送附件
001 MimeBodyPart theMimeBodyPart = new MimeBodyPart() ;
002 FileDataSource theFileDataSource=
003 new FileDataSource(theFileName) ;
004 theMimeBodyPart.setDataHandler
005 (new DataHandler(theFileDataSource)) ;
006 theMimeBodyPart.setFileName(theFileDataSource.getName()) ;
007 Multipart theMultipart = new MimeMultipart();
008 theMultipart.addBodyPart(theMimeBodyPart) ;
009 theMessage.setContent(theMultipart) ;
第 1行建立一个用来处理附件的 MimeBodyPart实体 。
第 2行则是建立一个用来封装附件文件的 FileDataSource对象,其中所接受的参数
theFileName为附件文件的完整路径名称 。
第 4行引用 setDataHandler(),将 FileDataSource所包含的数据来源储存至对象当中,其中接受一个 DataHandler 类的对象参数 。
第 7 行建立 Multipart类的对象,并且引用 addBodyPart()将上述的 MimeBodyPart加入其中,最后引用 setContent()将附件文件整合进所要发送的邮件当中 。
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 11
发送 HTML格式 邮件
HTML格式的邮件,必须借由设定 MimeBodyPart和 Multipart对象。直接传送 HTML格式的文字内容,需引用 MimeBodyPart的
setContent() 。
theMimeBodyPart.setContent
(bodyMessage,"text/html;charset=GB2312") ;
theMultipart.addBodyPart(theMimeBodyPart) ;
– bodyMessage为所要传送的 HTML标签文字内容 。
– 第 2个参数则是设定其格式为 HTML,并且以 GB2312为编码方式 。
– 设定好的 MimeBodyPart对象直接加入 Multipart,而最后通过
MimeMessage传送 。
第 11章 JavaMail与在线邮件
JSP 动态网页新技术 12
发送 HTML格式 邮件
以附件的方式寄送 HTML邮件,必须设定其中的关联图片文件才能正确的传送 HTML格式 。
theMimeBodyPart1.setHeader("Content-ID",“Images") ;
– setHeader()是 MimeBodyPart所提供的方法。
– 参数 Content-ID代表 要 设定关联 的 ID项目 。
– Images参数则是图片文件 的 文件名 。
HTML标签引用图片文件的时候,连结此图片文件的 HTML网页需要按照如下如下所示来设定,
<img src="cid:rpic" >
– Src属性 指定其 图片来源 。