JavaMail深入体验开发二: JavaMail的体系结构及发送复杂邮件
2012-06-06 09:14
351 查看
一 . 电子邮件传输的全过程:
二 . JavaMail 的体系结构与API分类
JavaMail API按其功能划分通常可分为如下三大类:
创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
三. 邮件发送的过程:
四.使用JavaMail发送一封带图片和附件的复杂邮件:
邮件组织结构相关的API:
MimeMessage类表示整封邮件。
MimeBodyPart类表示邮件的一个MIME消息。
MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。
复杂邮件的结构图:
发送邮件步骤;
1. 搭建开发环境:准备发送邮件相关jar包:
mail.jar
activation.jar(JAF):(可选的,如果JDK6.0+,则不需要此包)
2. 编写代码实现,如下:
二 . JavaMail 的体系结构与API分类
JavaMail API按其功能划分通常可分为如下三大类:
创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
三. 邮件发送的过程:
四.使用JavaMail发送一封带图片和附件的复杂邮件:
邮件组织结构相关的API:
MimeMessage类表示整封邮件。
MimeBodyPart类表示邮件的一个MIME消息。
MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。
复杂邮件的结构图:
发送邮件步骤;
1. 搭建开发环境:准备发送邮件相关jar包:
mail.jar
activation.jar(JAF):(可选的,如果JDK6.0+,则不需要此包)
2. 编写代码实现,如下:
package com.itheima; import java.io.FileOutputStream; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; //实现自己向自己发送一封复杂邮件 public class SendMessage { public static void main(String[] args) throws Exception{ Properties props = new Properties();//环境变量 props.setProperty("mail.host", "smtp.163.com"); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(props,new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("laotian", "123"); } }); session.setDebug(true);//开始调试:监控smtp协议 Transport ts = session.getTransport(); ts.connect("smtp.163.com", "laotian", "123");//连接邮件发送服务器 //创建代表邮件的对象MimeMessage MimeMessage message = new MimeMessage(session); message.setSubject("tttttttt"); message.setFrom(new InternetAddress("laotian@163.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("laotian@163.com")); //分别创建邮件的每部分内容,设置类型,有id的设置id。MimeBodyPart MimeBodyPart part1 = new MimeBodyPart(); part1.setContent("aaa<img src='cid:mm'/>aaa", "text/html"); MimeBodyPart part2 = new MimeBodyPart(); //jaf:DataHandler能自动感知文件的类型 images/jpeg DataHandler dh = new DataHandler(new FileDataSource("d:/2.jpg")); part2.setDataHandler(dh); part2.setContentID("mm"); //描述各部分之间的关系MimeMultiPart MimeMultipart multi = new MimeMultipart(); multi.addBodyPart(part1); multi.addBodyPart(part2); multi.setSubType("related");//描述关系 //加到MimeMessage中 message.setContent(multi); message.saveChanges(); ts.send(message,message.getAllRecipients()); } }
相关文章推荐
- JavaMail的体系结构及发送复杂邮件
- JavaMail深入体验开发三: 利用Tomcat管理邮件session及jar包冲突解决方案
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 基于javaMail的复杂邮件发送
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 邮件发送JavaMail的开发
- javaMail发送邮件(工具类开发)
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 基于JavaMail的Java邮件发送:复杂邮件发送
- JavaMail开发2-手动发送邮件
- 邮件原理与JavaMail开发(二)——使用JavaMail创建邮件和发送邮件
- javaMail发送邮件(工具类开发)
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 邮件原理与JavaMail开发(一)——邮件的发送与接收原理
- javamail 发送邮件,发复杂html,包括附件,以及内嵌图片的邮件
- 基于JavaMail的Java邮件发送:复杂邮件发送
- JavaMail深入体验开发一: 详解