准备工作

发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务

如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/article/details/112562613

依赖

mail.jar:https://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar

activation.jar: https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar

Maven

<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>

封装邮件发送工具类

使用

// User user = new User("收件人用户名", "收件人密码", "收件人邮箱");
User user = new User(username, password, email);
// 用户注册成功, 使用线程来发送邮件, 防止阻塞
SendMail sendMail = new SendMail(user);
sendMail.start();

工具类

package com.pro.utils;import com.pro.pojo.User;
import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;// 网站三秒原则
public class SendMail extends Thread {// 发送邮件的邮箱private String from = "33344466@qq.com";// 邮箱用户名private String username = "33344466@qq.com";// 授权码private String password = "absasyncawait";// 发送邮件的服务器地址private String host = "smtp.qq.com";private User user;public SendMail(User user) {this.user = user;}@Overridepublic void run() {try {Properties prop = new Properties();prop.setProperty("mail.host", host); // 设置qq邮件服务器prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码// 关于qq邮箱, 还要设置SSL加密MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);// 使用 JavaMail 发送邮件的5个步骤// 1. 定义整个应用程序所需要的环境信息的 Session 对象// 这一步是qq邮箱才有, 其他邮箱不用Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overridepublic PasswordAuthentication getPasswordAuthentication() {// 发件人邮箱 用户名和授权码return new PasswordAuthentication(username, password);}});// 开启 Session debugger 模式, 可以看到邮件发送的运行状态session.setDebug(true);// 2. 通过 Session得到 transport 对象Transport transport = session.getTransport();// 3. 使用邮箱用户名和授权码连上邮件服务器 (登陆)transport.connect(host, username, password);// 4. 创建邮件: 写邮件MimeMessage message = new MimeMessage(session);// ======== 写邮件 ========// 设置邮件的发件人message.setFrom(new InternetAddress(from));// 设置邮件的收件人message.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getEmail()));// 邮件标题message.setSubject("用户注册通知");// 邮件文本内容String content = "<div>" +"<span>恭喜你注册成功,你的用户名是:" +user.getEmail() +",你的密码是:" +user.getPassword() +",请妥善保管。</span>" +"<a href='https://www.tmall.com/' target='_blank'>" +"<img width='100%' src='https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2672619668,2196295127&fm=26&gp=0.jpg' />" +"</a>" +"<h4 style='color: red'>This email is sent from Java, 本邮件由Java程序发送, from to 33344466</h4>" +"</div>";message.setContent(content, "text/html; charset=UTF-8");// ======== 写邮件 ========// 5. 发送邮件transport.sendMessage(message, message.getAllRecipients());// 关闭连接transport.close();} catch (Exception e) {e.printStackTrace();throw new RuntimeException();}}
}

Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类相关推荐

  1. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  2. JAVA 邮件发送工具类

    1.封装邮件接收地址MODEL和邮件信息MODEL package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; / ...

  3. SMTP 协议邮件发送工具封装

    文章目录 1. 前言 1.1 说明 1.2 建议 1.3 源码 2. 发件人邮箱开通smtp 服务 2.1 为什么开通smtp 服务 2.2 开启服务的步骤 2.3 普通邮箱开启服务图文 3. 工具类 ...

  4. [Java工具] 邮件发送工具

    注册邮箱 去163邮箱(或其他邮箱)注册一个邮箱,并开启SMTP授权码. 程序 需要注意的是,由于阿里云服务器不让使用默认的25端口,所以会出现Windows下测试发送邮件成功,Linux服务器下发送 ...

  5. Java发送电子邮件(使用mail.jar和activation.jar)

    本文参考使用技术Java+JSP+Servlet 本次源代码可在本人网盘下载:http://pan.baidu.com/s/1jIdV7r4 循序渐进介绍如何使用Java发送电子邮件 一.J2EE+前 ...

  6. android mail发送邮件(包含163邮箱及qq邮箱,使用mail.jar,activation.jar,additionnal.jar)

    最近项目里有个发邮件的功能,不能调系统发邮件,也不能调用第三方的客户端,还必须可以发网易163邮箱,也可以发QQ邮箱.这让我想起来,当年初学java时自己写了个发送邮件的小demo,就是发给网易邮箱的 ...

  7. java邮箱发送工具类

    如何编写邮箱发送功能模块 1.主要编写了邮箱发送工具类,里面每行代码有详细注释,直接复制修改个人邮箱信息就能进行测试,希望对大家有用. 1.主要编写了邮箱发送工具类,里面每行代码有详细注释,直接复制修 ...

  8. java spring文件下载_SpringMVC实现文件上传和下载的工具类

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...

  9. 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive

    第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive 第十三天 - 封装JDBC操作Hive工具类 - HWI配置与使用 - JavaWeb结合Hive ...

最新文章

  1. python中使用指定GPU
  2. DG备库磁盘空间满导致无法创建归档
  3. 【Linux系统编程学习】 GCC编译器
  4. C++的JSON库及使用方法
  5. 目标检测第2步:如何在Windows 10下安装Anaconda?
  6. C语言为何到现在都是热门语言?原因很简单,程序员大牛都知道
  7. 容器服kubernetes_Kubernetes,标准化和安全性主导2017年Linux容器新闻
  8. PHP中提问频率最高的11个面试题和答案
  9. 十天冲刺---Day5
  10. python课程设计的心得体会_数据库课程设计心得体会精选篇
  11. mysql图文混排设计方案_平面设计图文混排技巧,看完再也不用担心排版了
  12. 网易云音乐 网络错误 linux,在Linux下网易云音乐打不开的另一种解决方法
  13. 水利知识库AI助手+公务员资料【产品经理】
  14. 揭开均线系统的神秘面纱_揭开动态规划的神秘面纱
  15. 微信企业号开发:企业支付成功后关闭交易页面问题
  16. 天龙八部手游服务器维护公告,天龙维护时间(天龙八部手游11月29日例行维护公告)...
  17. 腾讯帝国15年争霸之路:谁说我只会抄袭,不会创新?
  18. 小程序组件库ColorUI的使用,一键复制粘贴
  19. python打开chrome浏览器自动登录网站并发表说说批量
  20. IBM结盟飞康VTL提供高性能备份与重复数据删除

热门文章

  1. P3287 [SCOI2014]方伯伯的玉米田
  2. android gpu平板 推荐,性能强的不像话,最强安卓平板华为平板M6上手
  3. 真正的计算机科学,清华大学“姚半”的创始人,计算机科学界真正的“泰国斗”...
  4. 深度强化学习系列(6): DQN原理及实现
  5. TB6612FNG与直流电机控制教程
  6. 上海富爸爸_放弃高薪选择财务自由之路(转)
  7. max2 android9.0,乐视max2 安卓9.0刷机包
  8. 《炬丰科技-半导体工艺》 自对准栅氧化镓金属氧化物半导体晶体管
  9. 七牛 savekey php,七牛云1:客户端直接上传文件
  10. web页面:浏览器操作