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应 ...
随机推荐
- hibernate HQL查询
hql(都要在事务中完成)session.beginTransaction();session.getTransaction().commit(); session.beginTransaction( ...
- UpdatePanel无刷新
使用UpdatePanel实现无刷新效果 1. <asp:ScriptManager ID="scriptManger1" ruant="server"& ...
- shell入门-tr替换字符和split切割大文件
命令:tr 说明:替换字符 格式tr ‘原字符’ ‘新字符’ 可以是范围字符,指定字符 命令:split 选项:-b 50m 1.txt 根据大小分割 单位是b不用单位,单位是兆加m -l 100 ...
- 利用Ssocks访问国外网站(yutube/google等)
***开源项目:https://github.com/***/ 本例使用的是针对windows系统的c-sharp版本:https://github.com/***/***-windows 运行*** ...
- mysql--二进制日志(bin-log)
一.设置二进制日志 进制日志记录了所有的DDL和DML,但不包括各种查询.通过二进制日志,可以实现什么效果呢?二进制日志文件可以[实现灾难数据恢复],另外可以应用到[mysql复制数据同步].二进制日 ...
- ubuntu 13.04 安装 JDK
ubuntu 13.04 安装 JDK 具体步骤参详了如下链接: http://blog.csdn.net/yang_hui1986527/article/details/6677450 1.到 Su ...
- Struts2学习第七课 动态方法调用
动态方法调用:通过url动态调用Action中的方法. action声明: <package name="struts-app2" namespace="/&quo ...
- Lucene.net 搜索引擎的中文资料
以下是我找到的网上一些关于Lucene.net 搜索引擎的介绍资料 https://code.i-harness.com/zh-CN/tagged/lucene?page=5 http://jingp ...
- xilinx planahead partial reconfiguration
1.为什么要使用reconfiguration? reconfiguration,即逻辑可重配,指的是FPGA的逻辑只加载指定区域(功能)的逻辑,而对除此之外的逻辑不产生影响,最常用的就是PCIe/P ...
- hdu1088
#include <stdio.h> #include <string.h> int main() { char s[10000]; int len; int cnt = 0; ...