在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);//发送
}
}
分享到:
相关推荐
利用JavaMail进行邮件开发的发邮件的源代码,其中有四个例子,demo1/demo2是发送简单的邮件,demo3是发送一封html格式(正文为html格式,html代码中有一张图片)带附件的邮件。demo4是对demo3的补充,解决了附件的...
JavaMail发送和接受邮件的一个小例子, 含文本,图片, 附件等复杂格式
利用javamail批量发送邮件,以qq邮箱为例,延迟发送,带图片和附件。 直接可以运行,修改代码后可以增加配置界提高易用性 如需源代码可站内联系我
java利用javamail批量发送邮件,以qq邮箱为例,带图片和附件。 直接可以运行,修改代码后可以增加配置界提高易用性 如需源代码可站内联系我
用qq邮箱发送测试通过,能发复杂的邮件。包括图片,附件,html的文本显示等,共享下。
JavaMail创建的邮件是基于MIME协议的。因此可以使用JavaMail创建出包含图片,包含附件的复杂邮件。
复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用*/ package com.hx.mail; import java.io.File; import java.util.Map; import javax.mail.Message.RecipientType; /** * ...
用Java发送复杂的邮件怎么办,比如说添加图片、链接、附件等操作,看完此实例,你就能完全明白。
JavaMail发送邮件还是有些复杂,所以Apache CommonsEmail进行了再次封装,大大简化了邮件发送过程。 网站中经常用到的功能就是简单的发送一些邮件,比如发送 找回密码信息、报警信息,所以使用Apache Commons ...
《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 ... 实例69 发送带有附件的邮件 实例70 接收EMAIL
《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 ... 实例69 发送带有附件的邮件 实例70 接收EMAIL
JSP网络编程从基础到实践的实例代码 《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: ... 实例69 发送带有附件的邮件 实例70 接收EMAIL
◦邮件、短信模板管理 用于配置系统的发送邮件、短信的模板 ◦工作日历管理 用于配置系统的工作流的待办事项的处理工作时间的计算处理 ◦动态脚本管理 用于为流程任务节点或事件中可被调用的逻辑计算代码 ◦短信收发...
实例63 用servlet获取表单数据 实例64 用servlet读写文件数据 实例65 用servlet访问数据库 实例66 一个简单的struts应用实例——用户登录 JSP中的JavaMail开发 实例67 发送文本格式的邮件 ...