1、Maven引用

 <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --><dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version></dependency><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency>

2、Mail工具类:mailUtils

package utils;import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.util.*;/*** @author : HMF* className mailUtils* description 邮件工具类* date: 2022/3/13 13:18**/public class mailUtils {/*** 发送简单的文本邮件* @param contentMap  邮件配置和邮件内容*/public static void sendSimpleMail(Map<String, Object> contentMap){//获取系统属性Properties pros = new Properties();pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址pros.setProperty("mail.smtp.auth", "true");// 需要请求认证//设置邮件服务器Session session = Session.getInstance(pros);//创建默认的MimeMessage 对象MimeMessage msg = new MimeMessage(session);try {//邮件发送人msg.setFrom(contentMap.get("mailFrom").toString());//邮件接收人msg.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());//邮件标题头msg.setSubject(contentMap.get("mailTittle").toString());//邮件发送日期msg.setSentDate(new Date());//邮件文本内容msg.setContent(contentMap.get("mailContent").toString(), "text/html;charset=UTF-8");//保存邮件msg.saveChanges();Transport.send(msg, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());}catch (Exception mex){mex.printStackTrace();}}/*** 发送带有附件的邮件* @param contentMap  邮件配置和邮件内容* @param attachments  邮件附件* @return MimeMessage*/public static void SendAttachMail(Map<String, Object> contentMap, List<File> attachments){//获取系统属性Properties pros = new Properties();pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址pros.setProperty("mail.smtp.auth", "true");// 需要请求认证//设置邮件服务器Session session = Session.getInstance(pros);// 创建邮件对象MimeMessage mimeMessage = new MimeMessage(session);try {//邮件发送人mimeMessage.setFrom(contentMap.get("mailFrom").toString());//邮件接收人mimeMessage.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());//邮件主题mimeMessage.setSubject(contentMap.get("mailTittle").toString());//创建多重消息MimeMultipart multipart = new MimeMultipart();//邮件正文BodyPart contentPart = new MimeBodyPart();contentPart.setContent(contentMap.get("mailContent").toString(),"text/html;charset=UTF-8");multipart.addBodyPart(contentPart);//邮件附件if(attachments != null) {for(File attachment : attachments) {BodyPart attachmentPart = new MimeBodyPart();DataSource source = new FileDataSource(attachment);attachmentPart.setDataHandler(new DataHandler(source));//避免中文乱码的处理attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));multipart.addBodyPart(attachmentPart);}}mimeMessage.setContent(multipart,"UTF-8");//保存邮件mimeMessage.saveChanges();Transport.send(mimeMessage, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());}catch (Exception mex){mex.printStackTrace();}}
}

3、执行和邮件示例

调用

public class Test{public static void main(String[] args) {//发送方信息配置Map<String,Object> map = new HashMap<>();map.put("host","smtp.exmail.qq.com");map.put("mailFrom","hmf@xxx.com");map.put("passwd","xxx");map.put("mailTo","xxx@qq.com");//标题和内容配置map.put("mailTittle","测试发邮件,邮件主题");map.put("mailContent","测试发邮件,邮件内容");//发送简单邮件sendSimpleMail(map);//附件配置List<File> attaches = new ArrayList<>();File attach1 = new File("./data.csv");File attach2 = new File("./11.log");attaches.add(attach1);attaches.add(attach2);//发送带附件邮件SendAttachMail(map,attaches);}
}

简单邮件示例:

带附件邮件示例:

Java(83)Java发邮件简单工具类相关推荐

  1. JAVA——Java操作MySQL数据库的简单工具类[CLASS:DatabaseUtil]

    预备知识 Java连接MySQL数据库 源代码 package club.zstuca.util;import java.sql.Connection; import java.sql.DriverM ...

  2. JAVA 邮件发送工具类

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

  3. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

  4. Java实现Google的S2算法工具类

    WGS84坐标系 GCJ02坐标系 BD09坐标系的各种转换 WGS84坐标系 GCJ02坐标系 BD09坐标系的各种转换 Google S2 经纬度 转 CellId 经纬度 转 cellToken ...

  5. Java判断不为空的工具类总结

    Java判断不为空的工具类总结 1.Java判断是否为空的工具类,可以直接使用.包含,String字符串,数组,集合等等. 1 package com.bie.util; 2 3 import jav ...

  6. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  7. Java学习总结:58(Collections工具类)

    Collections工具类 Java提供了一个集合的工具类--Collections,这个工具类可以实现List.Set.Map集合的操作.Collections类的常用方法如下: No. 方法 类 ...

  8. java配置文件工具类,java项目加载配置文件的工具类

    java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...

  9. Java 图片添加数字暗水印工具类

    Java 图片添加数字暗水印工具类. package cnki.thesis.common.utils;import org.opencv.core.*;import java.util.ArrayL ...

最新文章

  1. poj1422(最小路径覆盖问题)
  2. SAP QM创建一个包含Multiple Specification的检验计划
  3. Java+Selenium+sikuli script入门使用
  4. rpg人物制作软件_新机制和随机性的完美结合!新RPG《元素梦境》参上
  5. LeetCode算法入门- Longest Substring Without Repeating Characters-day4
  6. Linux 命令(24)—— mv 命令
  7. Android之Surface/Window/View/SurfaceView区别
  8. HDU 3072 (强连通分量)
  9. optuna 自动化调参利器
  10. httpd2.4.39直接访问路径下的ceb文件,显示乱码
  11. 在线使用matlab,MATLAB在线版本使用介绍
  12. 【linux环境sqlplus登录oracle问题: ORA-12162 ORA-12545】
  13. 计算机三级数据库考试知识点及题库总结(最全)
  14. 企业网上下单订货管理软件源码搭建功能介绍|移讯云订货通订单管理系统
  15. 【MAC M1芯片】PS已解决在M1苹果电脑上出现“液化”和WEB等黑屏问题
  16. python发朋友圈突破朋友圈限制_突破限制!原来朋友圈可以发长达5分钟的视频,后悔没早点知道...
  17. sap清账使用反记账_【转】SAP反记账功能祥解
  18. 基于GMM模型的图像分割与颜色迁移算法
  19. 解决 E45: 'readonly' option is set (add ! to override)
  20. 关于python循环结构错误的是_以下关于Python的循环结构说法错误的是(_____)。...

热门文章

  1. 华为荣耀老机型鸿蒙,华为再次确认鸿蒙系统,50余款华为荣耀老机型可以更新系统...
  2. 2006,难以忘怀的一年
  3. ILRuntime使用讲解
  4. 彩色图像分割方法汇总
  5. 复制客服微信号,前往微信添加,拨打电话
  6. Linux 磁盘命令工具 比df更好用
  7. 苹果CEO库克是怎么成为硅谷良心的?
  8. 招募:500名学生,36元上16节课,报满为止,限时抢购!(含4本实体书包邮)...
  9. 算法第二期——排列组合(Python)
  10. 时速云黄启功:容器云PaaS平台将成为IT基础设施重要组成部分