(注: 本文是参考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. ZOJ-2342 Roads 二分图最小权值覆盖

    题意:给定N个点,M条边,M >= N-1.已知M条边都有一个权值,已知前N-1边能构成一颗N个节点生成树,现问通过修改这些边的权值使得最小生成树为前N条边的最小改动总和为多少? 分析:由于计算 ...

  2. iOS - UIRefreshControl 刷新数据

    前言 NS_CLASS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED @interface UIRefreshControl : UIControl 1.UIRefresh ...

  3. iOS - UIControl

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIControl : UIView @available(iOS 2.0, *) public class UIC ...

  4. Xpert 调优

    -- 10046 event 可以定义 SQL TRACE 级别 /* || 默认的10046级别跟 SQL TRACE 一样, 另外还有一些级别: || level 1: SQL Tracing | ...

  5. JavaSE复习_8 泛型程序设计

    今晚看了core Java的泛型部分,万万没有想到,当时看培训班视频入门的一带而过的泛型,有这样多的细节,整理了一下书里面提到的一些自认为的重点,方便以后观阅.由于是复习,一些基础知识跳过. △泛型类 ...

  6. hdu 5317 RGCDQ(前缀和)

    题目链接:hdu 5317 这题看数据量就知道需要先预处理,然后对每个询问都需要在 O(logn) 以下的复杂度求出,由数学规律可以推出 1 <= F(x) <= 7,所以对每组(L, R ...

  7. Android LayoutInflater深度解析 给你带来全新的认识

      转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38171465 , 本文出自:http://blog.csdn.net/lmj ...

  8. openSUSE 国内镜像和镜像使用帮助 (zhuan)

    https://my.oschina.net/u/2475751/blog/631036?p={{currentPage-1}} https://lug.ustc.edu.cn/wiki/mirror ...

  9. 每一个程序员需要了解的10个Linux命令

    作为一个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息.本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助. 以下就是今天我们 ...

  10. javascript隐式转换详解

    Javascript是web前端开发的必学技术,今天和大家分享的就是javascript的基础知识隐式转换,希望可以帮助大家更好的学习. 转换成布尔类型假 undefined->falSe nu ...