`
java-mans
  • 浏览: 11435672 次
文章分类
社区版块
存档分类
最新评论

JavaMail深入体验开发二: JavaMail的体系结构及发送复杂邮件

 
阅读更多

一 . 电子邮件传输的全过程:

二 . 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());
	}

}


分享到:
评论

相关推荐

    韩顺平sevlet,jsp视频教程知识点.txt

    视频描述: (-) servlet体系结构的介绍(二) servlet的网络拓扑结构(三) servlet的几个实例(四) servlet的生命周期(五) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程servlet第2讲(下集).wmv 视频描述-) servlet...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java...附录A JavaMail发送邮件 附录B 在Spring中开发Web Service

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java...附录A JavaMail发送邮件 附录B 在Spring中开发Web Service

    基于jbpm与activiti的工作流平台技术架构介绍

    ◦邮件、短信模板管理 用于配置系统的发送邮件、短信的模板 ◦工作日历管理 用于配置系统的工作流的待办事项的处理工作时间的计算处理 ◦动态脚本管理 用于为流程任务节点或事件中可被调用的逻辑计算代码 ◦短信收发...

    openGTS_Config

     1.2系统体系结构   1.3计划增强  1.4文档约定   2模块加载的先决条件   2.1 Java编译器    2.2 JavaMail支持   2.3 Apache Ant构建工具    2.4 Apache Tomcat Servlet容器    2.5 MySQL数据库提供...

    Java数据库编程宝典2

    1.5 数据库体系结构 1.5.1 Java数据对象 1.5.2 两层模型 1.5.3 三层模型 1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 ...

    Java数据库编程宝典4

    1.5 数据库体系结构 1.5.1 Java数据对象 1.5.2 两层模型 1.5.3 三层模型 1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 ...

    Java数据库编程宝典1

    1.5 数据库体系结构 1.5.1 Java数据对象 1.5.2 两层模型 1.5.3 三层模型 1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 ...

    Java数据库编程宝典3

    1.5 数据库体系结构 1.5.1 Java数据对象 1.5.2 两层模型 1.5.3 三层模型 1.6 小结 第2章 设计数据库 2.1 数据库设计应考虑的事项 2.1.1 项目规范 2.1.2 设计表 2.1.3 生成发票 2.2 引用完整性 2.2.1 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍...

Global site tag (gtag.js) - Google Analytics