JavaMail开发
---------------------------------------------发邮件------------------------------------------
需要jar包:
javaMail:mail.jar
jaf:activation.jar
public class MailTest {
/**
* 发送一个正常的邮件--只含文本
* @throws Exception
*/
@Test
public void sendNormal() throws Exception {
//1,设置邮箱服务器参数
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); // 指定协议
props.put("mail.smtp.host", "localhost"); // 主机
props.put("mail.smtp.port", 25); // 端口
props.put("mail.smtp.auth", "true"); // 用户密码认证
props.put("mail.debug", "true"); // 调试模式
//2,创建邮件会话对象
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user1", "user1");
}
});
MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress("user1@test.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("user2@test.com"));
message.setSubject("标题");
message.setText("内容");
Transport.send(message);
}
/**
* 发送带图片的邮件
*
*/
@Test
public void sendPhothMail() throws Exception {
//1,设置邮箱服务器参数
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); // 指定协议
props.put("mail.smtp.host", "localhost"); // 主机
props.put("mail.smtp.port", 25); // 端口
props.put("mail.smtp.auth", "true"); // 用户密码认证
// props.put("mail.debug", "true"); // 调试模式
//2,创建邮件会话对象
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user1", "user1");
}
});
//3,邮件信息
MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress("user1@test.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("user2@test.com"));
message.setSubject("带图片的邮件");
message.setSentDate(new Date());
// message.setText("哈哈"); 当使用Multipart时候,设置文本就无效
/**************1. 邮件设置图片资源********************/
// 1.1 创建负责复杂邮件体
MimeMultipart mul = new MimeMultipart("relassssted");
// 邮件体related = 内容 + 资源
MimeBodyPart content = new MimeBodyPart(); // 内容
MimeBodyPart resource = new MimeBodyPart(); // 资源
// 把内容资源设置到复杂邮件中
mul.addBodyPart(content);
mul.addBodyPart(resource);
//---- 设置邮件资源-----
File file = new File("f:/1.jpg");
// 设置本地数据资源
resource.setDataHandler(new DataHandler(new FileDataSource(file)));
// 设置网络数据
// resource.setDataHandler(new DataHandler(new URL("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1623986359,132242757&fm=117&gp=0.jpg")));
resource.setContentID("1.jpg"); // 图片资源在邮件中的名称
//---- 设置邮件内容------
content.setContent("<img src='cid:1.jpg' />正文邮件,你看图片!", "text/html;charset=UTF-8");
// 1.2 把复杂邮件,设置到邮件对象中(message)!
message.setContent(mul);
message.saveChanges(); // 保存邮件
Transport.send(message);
}
/**
* 发送带图片和附件的邮件
*/
@Test
public void sendAttachMail() throws Exception {
//1,设置邮箱服务器参数
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); // 指定协议
props.put("mail.smtp.host", "localhost"); // 主机
props.put("mail.smtp.port", 25); // 端口
props.put("mail.smtp.auth", "true"); // 用户密码认证
props.put("mail.debug", "true"); // 调试模式
//2,创建邮件会话对象
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user1", "user1");
}
});
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("user1@test.com"));
message.setRecipient(RecipientType.TO, new InternetAddress("user2@test.com"));
message.setSubject("带图片和附件的邮件:");
message.setSentDate(new Date());
//3.设置复杂邮件格式
MimeMultipart mix = new MimeMultipart();
//3.1附件
MimeBodyPart attach = new MimeBodyPart();
//3.2正文
MimeBodyPart content = new MimeBodyPart();
//3.3附件正文添加到复杂格式中
mix.addBodyPart(attach);
mix.addBodyPart(content);
//3.3.1附件内容设置
attach.setDataHandler(new DataHandler(new FileDataSource(zipFile(new File("f:/1.jpg")))));
attach.setFileName(MimeUtility.encodeText("附件.zip"));
//3.3.2正文设置
MimeMultipart mul = new MimeMultipart();
MimeBodyPart text = new MimeBodyPart();
MimeBodyPart img = new MimeBodyPart();
mul.addBodyPart(text);
mul.addBodyPart(img);
//图片文本设置
img.setDataHandler(new DataHandler(new FileDataSource(new File("f:/1.jpg"))));
img.setContentID("1.jpg");
text.setContent("<img src='cid:1.jpg' />哈哈附件+文本+图片", "text/html;charset=utf-8");
//正文内容添加到邮件
content.setContent(mul);
//复杂邮件格式添加到邮件主体
message.setContent(mix);
//4,发送邮件
Transport.send(message);
}
/**
* 数据压缩
* @throws IOException
*/
public File zipFile(File file) throws IOException {
String tem = "f:/2.zip";
InputStream in = new FileInputStream(file);
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(new File(tem)));
byte[] buf = new byte[8*1024];
int len = 0;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close();
File temFile = new File(tem);
return file;
}
}
JavaMail开发的更多相关文章
- JavaMail开发教程01开山篇
序 其实想写JavaMail这一系列的博客已经有一个月之久了,缘起是某次乱逛传智播客官网浏览到相关的视频教程,想起大学时代学过的计算机网络提到邮件相关的协议,但遗憾的是到目前为止还没有接触计算机网络编 ...
- 基于JavaMail开发邮件发送器工具类
基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...
- javaEE(17)_邮件原理与JavaMail开发
一.Java邮件开发介绍 为什么要学习javamail开发 •现在很多WEB应用在开发时都需要集成邮件发送功能,例如: •给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. •给过生日的注册 ...
- 19、文件上传与下载/JavaMail邮件开发
回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...
- JavaMail 邮件开发
(api + 配置) 开发中,邮件的应用? -à 注册,填写生日: 后期系统会自动发送生日祝贺 -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[ ...
- 在android开发中如何使用JavaMail程序
javaMail,是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Microsoft ...
- JavaMail和James
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micr ...
- JavaMail和James的秘密花园
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micros ...
- 使用JavaMail发送邮件和接受邮件
转载:http://blog.csdn.net/zdp072/article/details/30977213 一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 现在很多WEB应 ...
随机推荐
- spring初始化顺序
首先,Spring bean的默认加载顺序是怎么控制的 工程中有2个bean,A和B,其中必须先初始化A再初始化B,但是没有depend-on或者Order等方式去保证,只不过恰好刚好这么运行着没出事 ...
- 7.JasperReports学习笔记7-applet打印
转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 打包applet的class和所需的jar包,并加上数字签名 要运行打印 ...
- RubyGems 镜像 - 淘宝网
为什么有这个? 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.所以你会与遇到 gem install rack 或 bundle ...
- WEB 项目中的全局异常处理
在web 项目中,遇到异常一般有两种处理方式:try.....catch....:throw 通常情况下我们用try.....catch.... 对异常进行捕捉处理,可是在实际项目中随时的进行异常捕捉 ...
- shell分库备份
分库备份企业实战题7:如何实现对MySQL数据库进行分库备份,请用脚本实现 #!/bin/bash MysqlUser=root PassWord=root Port= Socket="/u ...
- 关于Synchronized关键字锁住对象的嵌套问题
如果在子关键字代码块中调用了sleep,是否会保留有所的锁?
- MySql数据查询的逻辑蕴含条件问题
SQL语言中没有蕴含逻辑运算.但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p->q ≡┐p∨q. 我们通过一个具体的题目来分析:(具体的表和数据详见文章:Mysql数据库中的EXIST ...
- Hadoop-2.3.0-cdh5.0.1完全分布式环境搭建(NameNode,ResourceManager HA)
编写不易,转载请注明(http://shihlei.iteye.com/blog/2084711)! 说明 本文搭建Hadoop CDH5.0.1 分布式系统,包括NameNode ,Resource ...
- 《精通Spring4.X企业应用开发实战》读后感第五章(基于Java类的配置)
- webAPI中使用FormsAuthenticationTicket作为登录权限票据
最近在做的项目得到经验,在做登录的时候,使用FormsAuthenticationTicket, 登录成功以后生成cookia作为登录态维护,票据作为调用其他接口的凭据,票据生成后传到前台作为调用接口 ...