2019独角兽企业重金招聘Python工程师标准>>>

1. 下载JavaMail API包 
下载地址
2. 导入所需的jar包

3. 发送一封简单邮件的基本步骤
3.1 创建Session
3.1.1 创建Session所需的基本配置

Properties prop = new Properties();
// 配置邮件的传送协议为smtp。
prop.setProperty("mail.transport.protocol", "smtp");
// 配置邮件主机,如新浪的SMTP服务器:smtp.sina.com
prop.setProperty("mail.host", "smtp.sina.com");
// 配置开启邮件传送身份验证
prop.setProperty("mail.smtp.auth", "true");

3.1.2 创建Authenticator

Authenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 配置好发送人的用户名和密码。// 如:belinwu@sina.com,则用户名为belinwu。return new PasswordAuthentication("belinwu", "********");}
};

3.1.3 创建Session对象

Session session = Session.getInstance(prop, authenticator);
session.setDebug(true); // 开启输出控制台Debug信息

3.2 创建邮件信息

Message message = new MimeMessage(session);
// 设置邮件的主题
message.setSubject("使用JavaMail技术发送邮件的主题!");
// 设置邮件的发送人
message.setFrom(new InternetAddress("belinwu@sina.com"));
// 设置邮件的收件人
message.setRecipient(RecipientType.TO, new InternetAddress("belinwu@qq.com"));
/*
* RecipientType有如下类型:
* RecipientType.TO:收件人
* RecipientType.CC:抄送
* RecipientType.BCC:秘密抄送
*/
// 设置邮件的正文内容
message.setText("使用JavaMail技术发送邮件的正文内容!");

3.3 发送邮件

Transport.send(message);

4. 发送HTML文件邮件

message.setContent("<h3 style='color:red;'>使用JavaMail技术发送邮件的正文内容!</h3>", "text/html;charset=utf-8");

5. 设置发件人和收件人的名称
5.1 使用MimeUtility类防止中文乱码

MimeUtility.encodeText("吴下阿吉")

5.2 设置名称

// 设置邮件的发送人
message.setFrom(new InternetAddress(MimeUtility.encodeText("吴下阿吉") + "<belinwu@sina.com>"));
// 设置邮件的收件人
message.setRecipient(RecipientType.TO, new InternetAddress(MimeUtility.encodeText("吴下阿林") + "<belinwu@qq.com>"));

6. 发送一封复杂邮件(以 带附件和正文内容内联图片为例)
6.1 使用Multipart作为Message的Content,即:

void javax.mail.Part.setContent(Multipart arg0) throws MessagingException

Multipart由若干个BodyPart组成,其中 BodyPart可以是一个Multipart,也可以由若干个BodyPart组成。如下图所示:

6.2 代码实现

Multipart messageMultipart = new MimeMultipart();
Multipart contentMultipart = new MimeMultipart();
// 附件一BodyPart
MimeBodyPart oneBodyPart = new MimeBodyPart();
oneBodyPart.setDataHandler(new DataHandler(new FileDataSource("d:/mis.sql")));
oneBodyPart.setFileName(MimeUtility.encodeText("信息管理系统.sql")); // 处理乱码
// 附件二BodyPart
MimeBodyPart twoBodyPart = new MimeBodyPart();
twoBodyPart.setDataHandler(new DataHandler(new FileDataSource("d:/movie.txt")));
twoBodyPart.setFileName("movie.txt");
// 正文BodyPart
MimeBodyPart contentBodyPart = new MimeBodyPart();
// 正文中的图片BodyPart
MimeBodyPart imageBodyPart = new MimeBodyPart();
imageBodyPart.setDataHandler(new DataHandler(new FileDataSource("d:/pic.gif")));
// 设置CID,可以在真正的正文内容中引用该图片。
imageBodyPart.setContentID("image");
// 正文内容BodyPart
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("<h1 style='color:red;'>这是一封带附件的邮件!</h1><img src='cid:image' />", "text/html;charset=utf-8");
// 绑定从属关系
contentMultipart.addBodyPart(imageBodyPart);
contentMultipart.addBodyPart(messageBodyPart);
contentBodyPart.setContent(contentMultipart);
messageMultipart.addBodyPart(oneBodyPart);
messageMultipart.addBodyPart(twoBodyPart);
messageMultipart.addBodyPart(contentBodyPart);
message.setContent(messageMultipart);

6.3 邮件效果图

7. 测试代码所需要的类

import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility;

其中需要JAF中的activation.jar包,在JDK 1.4以前需要手动导入到项目中。

转载于:https://my.oschina.net/belinwu/blog/109603

使用JavaMail技术发送邮件相关推荐

  1. 通过javaMail API 发送邮件

    使用JavaMail API发送邮件只需要执行以下三个步骤: 1. 创建包含邮件服务器的网络连接信息的Session对象. 2. 创建代表邮件内容的Message对象. 3. 从Session对象中获 ...

  2. 运用JavaMail技术实现云打印

    在我们最近所做的M3项目里面有个算价单的功能,在算价完毕后是算价结果的展示页,页面右上角提供的有"打印"按钮,点击"打印"按钮后云打印机会将算价结果打印到A4纸 ...

  3. Java Web(十三) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

    加油加油. --WH 一.发送邮件的原理 在了解其原理之前,先要知道两个协议,SMTP和POP3 SMTP:Simple Mail Transfer Protocol,即简单邮件传输协议,发送邮件的协 ...

  4. web开发(九) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6506027.html>,在此仅供学习参考之用. 一.发送 ...

  5. JavaMail实现发送邮件程序

    1.JavaMail的介绍 1.1 什么是JavaMail JavaMail,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我 ...

  6. javaMail简单发送邮件

    public class Mail {//发件人邮箱和密码static String myEmail="xxxxx@126.com";static String myEmailpa ...

  7. Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)

    说实话腾讯的企业邮箱真心不错! 腾讯企业邮箱官网:http://exmail.qq.com/login/ 新用户注册:http://exmail.qq.com/onlinesell/intro 点击开 ...

  8. java 发 腾讯企业邮_(更新)Java + 腾讯企业邮箱 + javamail + SSL 发送邮件

    咳咳~最头疼的就是莫名其妙的错误. 本来今年6月份运行通过的代码,过俩月就报错了. 1 javax.mail.MessagingException: Could not connect to SMTP ...

  9. 邮件发送程序(添加附件发送)

    目标:实现一个基于Web的可以发送附件的邮件程序.(涉及的知识点:文件上传+邮件发送) 知识点引入: 文件上传:开发的Web应用是基于HTTP协议的,工作在Request/Response模式下.在这 ...

最新文章

  1. 墨奇科技汤林鹏:如何用 AI 技术颠覆指纹识别?
  2. 大数据引发的风险与管控
  3. 【Auto Layout】Xcode6及以上版本,创建Auto Layout 约束时产生的一些变化【iOS开发教程】...
  4. 【赠书】五一假期福利,OpenCV4最新原理与实战书籍
  5. Ajax设置自定义请求头的两种方法
  6. stm32f1的存储器与复位
  7. Pytorch 一种调整学习率的思路
  8. Delphi中Chrome Chromium、Cef3学习笔记(三)
  9. flink 入门及安装
  10. 操作系统学习(十三) 、中断和异常
  11. java 传递intent_intent传递参数
  12. 工作没做好,别人指出时最好装聋作哑
  13. 设计模式--创建型模式之抽象工厂模式
  14. 如何给计算机关闭网络连接,win10系统的电脑怎么把网络连接关闭?
  15. python误差修正模型_如何用格兰杰检验、协整对数据进行分析_格兰杰因果检验...
  16. UBUNTU 编译安装GEOS
  17. 横摆角速度传感器原理
  18. java 读写锁_Java 读写锁的实现
  19. 参数方程绘制球面、椭球面、环面_OpenGL
  20. 微信公众平台 html,微信公众平台.html

热门文章

  1. JavaEE_Spring Framework
  2. 小菜鸟装VM之后装linux
  3. Velocity 语法学习
  4. 菜鸟心态综合症4:缺乏自信,总对自己说No
  5. mysql误删除ibdata1以及日志ib_logfile*
  6. JDK自带内存及线程分析工具
  7. redis 配置以及缓存(javaconfig)
  8. spark-env.sh配置
  9. 2015.7.29 上学前在家的最后一晚
  10. 【转】php中XML、XSLT的结合运用