---------------------------------------------发邮件------------------------------------------

需要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开发的更多相关文章

  1. JavaMail开发教程01开山篇

    序 其实想写JavaMail这一系列的博客已经有一个月之久了,缘起是某次乱逛传智播客官网浏览到相关的视频教程,想起大学时代学过的计算机网络提到邮件相关的协议,但遗憾的是到目前为止还没有接触计算机网络编 ...

  2. 基于JavaMail开发邮件发送器工具类

    基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...

  3. javaEE(17)_邮件原理与JavaMail开发

    一.Java邮件开发介绍 为什么要学习javamail开发 •现在很多WEB应用在开发时都需要集成邮件发送功能,例如: •给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. •给过生日的注册 ...

  4. 19、文件上传与下载/JavaMail邮件开发

    回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...

  5. JavaMail 邮件开发

    (api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[ ...

  6. 在android开发中如何使用JavaMail程序

    javaMail,是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Microsoft  ...

  7. JavaMail和James

      JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micr ...

  8. JavaMail和James的秘密花园

    JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Micros ...

  9. 使用JavaMail发送邮件和接受邮件

    转载:http://blog.csdn.net/zdp072/article/details/30977213 一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 现在很多WEB应 ...

随机推荐

  1. spring初始化顺序

    首先,Spring bean的默认加载顺序是怎么控制的 工程中有2个bean,A和B,其中必须先初始化A再初始化B,但是没有depend-on或者Order等方式去保证,只不过恰好刚好这么运行着没出事 ...

  2. 7.JasperReports学习笔记7-applet打印

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 打包applet的class和所需的jar包,并加上数字签名 要运行打印 ...

  3. RubyGems 镜像 - 淘宝网

    为什么有这个? 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.所以你会与遇到 gem install rack 或 bundle ...

  4. WEB 项目中的全局异常处理

    在web 项目中,遇到异常一般有两种处理方式:try.....catch....:throw 通常情况下我们用try.....catch.... 对异常进行捕捉处理,可是在实际项目中随时的进行异常捕捉 ...

  5. shell分库备份

    分库备份企业实战题7:如何实现对MySQL数据库进行分库备份,请用脚本实现 #!/bin/bash MysqlUser=root PassWord=root Port= Socket="/u ...

  6. 关于Synchronized关键字锁住对象的嵌套问题

    如果在子关键字代码块中调用了sleep,是否会保留有所的锁?

  7. MySql数据查询的逻辑蕴含条件问题

    SQL语言中没有蕴含逻辑运算.但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p->q ≡┐p∨q. 我们通过一个具体的题目来分析:(具体的表和数据详见文章:Mysql数据库中的EXIST ...

  8. Hadoop-2.3.0-cdh5.0.1完全分布式环境搭建(NameNode,ResourceManager HA)

    编写不易,转载请注明(http://shihlei.iteye.com/blog/2084711)! 说明 本文搭建Hadoop CDH5.0.1 分布式系统,包括NameNode ,Resource ...

  9. 《精通Spring4.X企业应用开发实战》读后感第五章(基于Java类的配置)

  10. webAPI中使用FormsAuthenticationTicket作为登录权限票据

    最近在做的项目得到经验,在做登录的时候,使用FormsAuthenticationTicket, 登录成功以后生成cookia作为登录态维护,票据作为调用其他接口的凭据,票据生成后传到前台作为调用接口 ...