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. BeautifulSoup_第二节
  2. 安装python3.6.1_CentOS 7 安装Python3.6.1 多版本共存
  3. python学习_22(文件)
  4. C#操作符??和?:
  5. 委托、事件与Observer设计模式
  6. 数据同步 rsync+notify架构
  7. 发生在“注解”@的那些事儿
  8. matlab用solve解方程错误提示,MATLAB中使用solve解决方程组的问题
  9. 脉冲神经元的膜电位释放方式,分为hard和soft两种
  10. python爬取邮件内容_登陆邮箱 爬取邮件
  11. 软件工程之概要设计说明书
  12. 【POWER BI商业数据分析】销售目标分解
  13. 编译程序、解释程序、汇编程序和编译、解释的概念
  14. 请详细分析商品期货最近走势( 2016-11-29)
  15. 元宇宙虚拟数字人系统
  16. Apache ShardingSphere 毕业成为 Apache 顶级项目,系业界首个 Apache 分布式数据库中间件项目
  17. 【SQL】通过SQL语句对学生信息表(学号、学生姓名、班级)、学习成绩表(学号、学科、成绩)的数据进行创建、查询、删除、更新
  18. sap 界面创建凭证_查看会计凭证
  19. 解决sublime安装插件被墙失败的方法
  20. 【QTP版资料大汇总】

热门文章

  1. shell特殊符、sort、tee、
  2. PHP系列(十三)PHP会话控制
  3. 获取系统当前时间(多语言版)
  4. svm工具箱快速入手简易教程
  5. mysql 8.0 ~ 安装
  6. HTML5 -- WebSocket
  7. 转Git学习碰到的问题
  8. Linux命令:find命令
  9. jqgrid for asp.net 遍历所有列rowObject时不用输入编号
  10. 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别