首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Java邮件开发(三)_使用JavaMail API编写一个复杂结构的邮件

2012-12-28 
Java邮件开发(3)_使用JavaMail API编写一个复杂结构的邮件本文包括两部分,一、邮件文件的内部结构与API分析

Java邮件开发(3)_使用JavaMail API编写一个复杂结构的邮件

本文包括两部分,一、邮件文件的内部结构与API分析 二、编写复杂邮件

一、邮件文件的内部结构与API分析
1.复合邮件的整体结构
??????? 整体邮件的MIME消息头(mutlipart/mixed)
??????????????? 邮件正文的MIME消息头(multpart/related)
??????????????????????? HTML代码的消息头、HTML代码的消息体(multipart/alternative(纯文本+超文本)+内嵌资源 )
??????????????????????? 图片代码的消息头、图片代码的消息体
??????????????? 第一个附件文件的MIME消息头
??????????????? 第一个附件文件的MIME消息体
??????????????? 第二个附件文件的MIME消息头
??????????????? 第二个附件文件的MIME消息体
??????????????? 。。。。

2.邮件组织结构相关的API
MimeMessage对象
??????? MIME对象的消息头
??????? MimeMultipart对象
???????????????? MimeBodyPart对象
???????????????? MimeMultipart对象中设置MimeMultipart对象( MimeBodyPart对象、 MimeBodyPart对象、 MimeBodyPart对象)
???????????????? MimeBodyPart对象

说明:
MimeMessage类表示整封邮件
MimeBodyPart类表示邮件的一个MIME消息??
MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息

关于邮件组织具体结构的图表析构可参考:JavaMail:带附件的邮件格式解析

?

?

二、编写复杂邮件?
要求:邮件包含附件,且附件名称和发件人名称友好。具体代码如下:

?

package info.zoio.javamail;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Message.RecipientType;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class Demo3 {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubSession session = Session.getInstance(new Properties());MimeMessage msg = new MimeMessage(session);msg.setFrom(new InternetAddress(""" + MimeUtility.encodeText("十井") + "" <java_mail_test@126.com>"));//msg.setReplyTo(new Address[]{new InternetAddress("test@621.com")});//回复时的默认收件人msg.setRecipient(RecipientType.TO, new InternetAddress("java_mail_test@yeah.net"));msg.setSubject("复杂邮件测试");//整体框架MimeMultipart msgMultipart = new MimeMultipart("mixed");msg.setContent(msgMultipart);MimeBodyPart cotent = new MimeBodyPart();MimeBodyPart attch1 = new MimeBodyPart();MimeBodyPart attch2 = new MimeBodyPart();msgMultipart.addBodyPart(cotent);msgMultipart.addBodyPart(attch1);msgMultipart.addBodyPart(attch2);//添加正文内容MimeMultipart bodyMultipart = new MimeMultipart("related");cotent.setContent(bodyMultipart);MimeBodyPart htmlBodyPart = new MimeBodyPart();bodyMultipart.addBodyPart(htmlBodyPart);htmlBodyPart.setContent("<span style='color:red'>哈哈<span>", "text/html;charset=gbk");//添加附件DataSource attahDs1 = new FileDataSource("H:\\config.txt");DataHandler attahDh1 = new DataHandler(attahDs1);attch1.setDataHandler(attahDh1);attch1.setFileName(MimeUtility.encodeText("attach1哈哈.txt"));DataSource attahDs2 = new FileDataSource("F:\\Java邮件\\手工发送邮件.png");DataHandler attahDh2 = new DataHandler(attahDs2);attch2.setDataHandler(attahDh2);attch2.setFileName(MimeUtility.encodeText("attach2哈哈.png"));//生成邮件msg.saveChanges();//保存到本地OutputStream os = new FileOutputStream("F:\\Java邮件\\demo3.eml");msg.writeTo(os);os.close();}}
?

?

具体生成邮件效果可登陆java_mail_test@yean.net邮箱(pwd:h123456)查看。

?

热点排行