`
234390216
  • 浏览: 10195152 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:460896
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1771964
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1395581
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:393943
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:678293
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:529349
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1178848
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:462207
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:150206
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:66916
社区版块
存档分类
最新评论

使用javaMail发送复杂邮件,支持附件发送

阅读更多

在javaMail中整个邮件是由一个一个的BodyPart组成的,每一个BoydPart的内容可以是简单的普通文本,或超文本,或是一个附件,也可以是复杂的一个Multipart,然后Multipart中又可以嵌套多个BodyPart和Multipart。

 

下面是使用javaMail构造一封复杂的邮件,并发送该邮件。

import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class Email4 {

	public static void main(String args[]) throws AddressException, MessagingException {
		
		Properties props = new Properties();
		//发送邮件的服务器
		props.setProperty("mail.smtp.host", "smtp.qq.com");
		//发送邮件的协议
		props.setProperty("mail.transport.protocol", "smtp");
		//在连接服务器的时候是否需要验证,发邮件是需要验证的
		props.setProperty("mail.smtp.auth", "true");
		//用户名
		final String username = "1111111111@qq.com";
		//密码
		final String password = "11111111111";
		
		//利用上述的用户名和密码构造一个Authenticator对象,并把它给Session,
		//当需要进行验证的时候,会自动从Session中去取该Authenticator对象
		Authenticator authenticator = new Authenticator() {

			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				// TODO Auto-generated method stub
				return new PasswordAuthentication(username, password);
			}
			
		};
		//利用上述提供给系统的属性和Authenticator构造一个Session对象
		Session session = Session.getInstance(props, authenticator);
		//设为true,可以看到发送邮件的整个过程
		session.setDebug(true);
		//利用配好配置信息的Session新建一封邮件
		Message message = new MimeMessage(session);
		//设置邮件的发送者
		message.setFrom(new InternetAddress("111111111111@qq.com"));
		//邮件的主题
		message.setSubject("Sending Email Test!");
		Address[] recipients = InternetAddress.parse("*************@sohu.com");
		//收邮件的人,如果有抄送,密送的,可以类似的设置,只是把RecipientType改为相应的类型
		message.setRecipients(RecipientType.TO, recipients);
		BodyPart part1 = new MimeBodyPart();
		BodyPart part2 = new MimeBodyPart();
		BodyPart part3 = new MimeBodyPart();
		BodyPart part4 = new MimeBodyPart();
		BodyPart part5 = new MimeBodyPart();
		//设置内容为html
		part1.setContent("<div style='font-size:large;font-weight:bold;color:red;height:50px;border:1px solid blue;'>HELLO WORLD;你好,世界</div>", "text/html;charset=utf-8");
		//设置内容为普通文本
		part2.setText("你好,Part2");
		//将一个bodyPart加到最前面
		part3.setText("Hello Part3");
		
		
		/**
		 * 发送一个附件的情况
		 */
		//设置附件
		//DataSource是对附件的封装,是一个接口,系统已经实现的子类有URLDataSource, DataHandlerDataSource, FileDataSource
		//里面封装了各种与附件有关的方法,包括获取附件的InputStream
		DataSource dataSource = new FileDataSource(new File("E:\\doc.sql"));
		//DataHandler是对DataSource的封装,可以把Stream转换为String,
		DataHandler dataHandler = new DataHandler(dataSource);
		part4.setDataHandler(dataHandler);
		//附件的名称,默认为content,如果文件名不加扩展名在进行附件下载的时候系统会不知道该附件是什么类型的附件,
		//这样在不清楚文件类型的情况下,文件有可能是打不开的
		part4.setFileName("doc.sql");
		
		/**
		 * 发送多个附件的情况
		 */
		Multipart attachments = new MimeMultipart();
		BodyPart attach1 = new MimeBodyPart();
		//设置附件1的内容
		DataSource dataSource_attach1 = new FileDataSource(new File("E:\\doc.sql"));
		DataHandler dataHandler_attach1 = new DataHandler(dataSource_attach1);
		attach1.setDataHandler(dataHandler_attach1);
		attach1.setFileName("attach1_doc.sql");
		BodyPart attach2 = new MimeBodyPart();
		//设置附件2的内容
		DataSource dataSource_attach2 = new FileDataSource(new File("E:\\doc.sql"));
		DataHandler dataHandler_attach2 = new DataHandler(dataSource_attach2);
		attach2.setDataHandler(dataHandler_attach2);
		attach2.setFileName("attach2_doc.sql");
		attachments.addBodyPart(attach1);
		attachments.addBodyPart(attach2);
		part5.setContent(attachments);
		
		Multipart multipart = new MimeMultipart();
		multipart.addBodyPart(part1);
		multipart.addBodyPart(part2);
		multipart.addBodyPart(part3,0);
		multipart.addBodyPart(part4);
		multipart.addBodyPart(part5);
		message.setContent(multipart);
		Transport.send(message);//发送
		
	}
	
}

 

5
3
分享到:
评论
4 楼 zhmy0129 2011-09-06  
先收了~
3 楼 yizhl 2011-09-05  
234390216 写道
lqixv 写道
用 apache 的 commons-email.jar 来发送,非常简单,且容易上手。别搞得那么复杂了。

有空我试一试

要知其然,更要知其所以然! 楼主very good!
2 楼 234390216 2011-09-05  
lqixv 写道
用 apache 的 commons-email.jar 来发送,非常简单,且容易上手。别搞得那么复杂了。

有空我试一试
1 楼 lqixv 2011-09-05  
用 apache 的 commons-email.jar 来发送,非常简单,且容易上手。别搞得那么复杂了。

相关推荐

    使用JavaMail发送复杂邮件源代码

    利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...

    JavaMail发送和接受邮件的一个小例子

    JavaMail发送和接受邮件的一个小例子, 含文本,图片, 附件等复杂格式

    l批量发送带图片和附件的复杂邮件(防邮件屏蔽)

    利用javamail批量发送邮件,以qq邮箱为例,延迟发送,带图片和附件。 直接可以运行,修改代码后可以增加配置界提高易用性 如需源代码可站内联系我

    利用qq邮箱批量发送复杂邮件(带图片和附件)

    java利用javamail批量发送邮件,以qq邮箱为例,带图片和附件。 直接可以运行,修改代码后可以增加配置界提高易用性 如需源代码可站内联系我

    javamail群发邮件源码

    用qq邮箱发送测试通过,能发复杂的邮件。包括图片,附件,html的文本显示等,共享下。

    java发送邮件jar包

    JavaMail创建的邮件是基于MIME协议的。因此可以使用JavaMail创建出包含图片,包含附件的复杂邮件。

    复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用

    复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用*/ package com.hx.mail; import java.io.File; import java.util.Map; import javax.mail.Message.RecipientType; /** * ...

    可带附件的复杂邮件发送实例

    用Java发送复杂的邮件怎么办,比如说添加图片、链接、附件等操作,看完此实例,你就能完全明白。

    Java-ApacheMail发送邮件

    JavaMail发送邮件还是有些复杂,所以Apache CommonsEmail进行了再次封装,大大简化了邮件发送过程。 网站中经常用到的功能就是简单的发送一些邮件,比如发送 找回密码信息、报警信息,所以使用Apache Commons ...

    jsp网络编程从基础到实践

    《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 ... 实例69 发送带有附件的邮件 实例70 接收EMAIL

    JSP网络编程从基础到实践 实例代码

    《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 ... 实例69 发送带有附件的邮件 实例70 接收EMAIL

    JSP网络编程从基础到实践的实例代码

    JSP网络编程从基础到实践的实例代码 《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: ... 实例69 发送带有附件的邮件 实例70 接收EMAIL

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

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

    JSP网络编程从基础到实践

    实例63 用servlet获取表单数据 实例64 用servlet读写文件数据 实例65 用servlet访问数据库 实例66 一个简单的struts应用实例——用户登录 JSP中的JavaMail开发 实例67 发送文本格式的邮件 ...

Global site tag (gtag.js) - Google Analytics