(注: 本文是参考http://www.cnblogs.com/xdp-gacl/p/4216311.html. 感谢博主的精彩的描述)

一, 前期的准备

  1, 导入 mail.jar

二, 操作步骤:

  1, 创建Properties对象, 并设置相关属性, 其中包括: mail.host,  mail.transport.protocol,  mail.smtp.auth.

  2, 创建Session对象, 设置发送邮件的网络环境, 即导入Properties对象.

  3, 通过Session对象获取Transport对象, 用于发送邮件. transport对象实现了邮件发送协议,如SMTP

  4, 使用用户名和密码连接邮件服务器

  5, 创建邮件Message 实例(由于邮件内容比较复杂, 此处使用MimeMessage)

    5.1  创建MimeBodyPart 实例(包括: 文本, 图片, 附件), 并设置内容(setContent(), setDataHandler())和 ID或名称.

    5.2  创建关系描述实例MimeMultipart, 添加所加入的元素, 并设置关系类型(related, mixed)

    5.3   将关系描述实例设置为message的内容.

    5.4  保存修改, saveChanges();

  6, 发送邮件: transport.sendMessage();

 package jason.mail;

 import java.util.Properties;

 import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; public class SimpleSendMail {
public static void main(String[] args) throws Exception{
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.163.com");
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true"); // 使用javaMail发送邮件的5个步骤
//1. 创建session, 即发送邮件的网络环境
Session session = Session.getInstance(prop); //开启session的debug模式,这样就可以查看发送Email的运行状态
session.setDebug(true); //2. 得到transport对象: 通过session获得
Transport ts = session.getTransport(); //3. 使用用户名, 密码连接邮件服务器
ts.connect("smtp.163.com", "liujun4719", "jason./1234"); //4. 创建邮件
Message message = createMail(session); //5. 发送邮件
int i = 1;
while(i++ <= 6){
ts.sendMessage(message, message.getAllRecipients());
}
ts.close(); } public static MimeMessage createMail(Session session) throws Exception{ //创建邮件
MimeMessage message = new MimeMessage(session); //设置邮件的的基本信息
message.setFrom(new InternetAddress("liujun4719@163.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("xiangjun.Liu@travelzen.com"));
message.setSubject("带附件和图片的邮件"); //正文
MimeBodyPart text = new MimeBodyPart();
text.setContent("hello", "text/html;charset=UTF-8"); //图片
MimeBodyPart image = new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource("/home/liuxiangjun/doc/mailTest/mailTestPic.png")));
image.setContentID("mailTest"); //附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("/home/liuxiangjun/doc/mailTest/aliedit.sh"));
attach.setDataHandler(dh);
attach.setFileName(dh.getName()); //描述关系: 正文与图片
MimeMultipart mp1 = new MimeMultipart();
mp1.addBodyPart(text);
mp1.addBodyPart(image);
mp1.setSubType("related"); //描述关系: 正文与附件
MimeMultipart mp2 = new MimeMultipart();
mp2.addBodyPart(attach); //代表正文的bodypart
MimeBodyPart content = new MimeBodyPart();
content.setContent(mp1);
mp2.addBodyPart(content);
mp2.setSubType("mixed"); message.setContent(mp2);
message.saveChanges(); return message; } }

javaMail创建邮件和发送邮件总结的更多相关文章

  1. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  2. (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...

  3. 使用JavaMail创建邮件和发送邮件

    参考https://www.cnblogs.com/xdp-gacl/p/4216311.html,写的真好,知识在于分享,备份留着看 一.RFC882文档简单说明 RFC882文档规定了如何编写一封 ...

  4. 使用JavaMail创建邮件发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  5. JavaMail入门第二篇 创建邮件

    JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.internet.MimeMessage类来 ...

  6. (二)JavaMail创建包含内嵌图片的邮件

    链接:https://blog.csdn.net/qq_41151659/article/details/96475739 代码如下: import com.sun.mail.util.MailSSL ...

  7. 01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件

    [工程截图] [代码实现] [Mail.java] package com.Higgin.Utils; import java.util.ArrayList; import java.util.Lis ...

  8. 基于javaMail的邮件发送--excel作为附件

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  9. javaMail发邮件,激活用户账号

    用javamail实现注册用户验证邮箱功能.用户注册后随机生成一个uuid作为用户的标识,传递给用户然后作为路径参数.发送html的内容到用户注册的邮箱里,若用户点击后去往的页面提交username和 ...

随机推荐

  1. js call与apply的区别-Tom

    .apply和.call方法是在函数原型中定义的两个方法(因此所有的函数都可以访问它)允许去手动设置函数调用的this值,他们用接受 的第一个参数作为this值,this 在调用的作用域中使用.这两个 ...

  2. Node.js superagent 采集 URL 编码问题

    今天在用Node学习采集的时候遇到一个问题,如这个链接地址 http://www.meishij.net/胡萝卜  就是用浏览器的方式访问链接可以打开,但用superagent 去模拟请求,就请求不到 ...

  3. UEditor文档

    UEditor文档http://fex.baidu.com/ueditor/Ueditor 前后端数据交互 http://blog.csdn.net/bobo_93/article/details/5 ...

  4. Eclipse启动tomcat时报错:Multiple Contexts have a path of "/xxx"

    今天使用Eclipse启动tomcat部署项目时,遇到一个奇怪的错误: Could not publish server configuration for Tomcat v6.0 Server at ...

  5. Java的动态绑定

    看这段代码 Father father = new Son(); 父类引用指向子类对象,这是java的多态特性,有多态引到动态绑定,如何引入呢,看这个代码: class Father{ private ...

  6. sensitivity and specificity(敏感性和特异性)

    医学.机器学习等等,在统计结果时时长会用到这两个指标来说明数据的特性.

  7. js encodeURI方法认识

    很早就知道js中encodeURI方法,也很早就用过,但是每次看到它总感觉有些陌生,因为不知道到底是什么原理,和普通的编码到底什么关系, 今天在查看w3c api时又遇到了她,正好有空就多看了几眼,突 ...

  8. js代码如何测试代码运行时间

    function add(){ //这里放要执行的代码 } //开始测试并输出 function test() { var start=new Date().getTime(); add(); var ...

  9. IoC 之 2.2 IoC 容器基本原理(贰)

    2.2.1  IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IoC ...

  10. Java构造函数的继承问题

    ◎构造函数的继承 1.子类只继承父类的默认(缺省)构造函数,即无形参构造函数.如果父类没有默认构造函数,那子类不能从父类继承到任何构造函数. 3.在创建对象时,先调用父类默认构造函数对对象进行初始化, ...