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

需要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. Lua虚拟机初始化

    转自:http://www.cnblogs.com/ringofthec/archive/2010/11/09/lua_State.html 1. 创建lua虚拟机 lua_State *lua_ne ...

  2. 【转】ruby 时间日期处理

    我们可以使用Time类来生成一个当前时间的对象: t = Time.new 或 t = Time.now Time类有类方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它 ...

  3. UML核心元素--用例

    定义:用例定义了一组用例实例,其中每个实例都是系统所执行的一些列操作,这些操作生成特定主角可以观测的值.一个完整的用例定义由参与者.前置条件.场景.后置条件构成. 1.理解用例:用例就是参与者希望通过 ...

  4. Ruby迭代器(Iterator)

    简单的讲,一个迭代器就是一个能接受代码块的方法.当初为了进行迭代操作而设置了带块方法,现在很多时候仍然称它为迭带器. 可实际上,早期版本的 Ruby 将使用代码块的方法称为迭代器,因为它们就是被设计来 ...

  5. QTP使用outlook发送邮件

    '发邮件 Dim objOutlook  Dim objOutlookMsg Dim olMailItem  ' Create the Outlook object and the new mail ...

  6. 局域网中使用的IP地址有哪些?

    当我们建设一个局域网的时候,需要为网络中的每台计算机分配一个IP地址.那么都有哪些IP地址可以使用在局域网中呢?局域网中的IP地址有什么规定呢? 在局域网中,我们是不能使用如202.106.45.11 ...

  7. Some of your uncommitted changes would be overwritten by syncing.Please commit your changes then try

    解决方法有三种,在GitHub shel中输入以下命令,任选一种方法就能解决问题 git reset --hard HEAD -- Destructive. When you do this you' ...

  8. Entity Framework Code-First(12):Configure One-to-Many

    Configure One-to-Many Relationship: Here, we will learn how to configure One-to-Many relationship be ...

  9. 20169219《linux内核原理与分析》第七周作业

    网易云课堂学习 把write系统调用加入到MenuOS里面 我在试验过程中在MenuOS里加入了time.time-asm.write和write-asm命令.以time和time-asm为例, 步骤 ...

  10. System.Threading.Thread的使用及传递参数等总结

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...