首先导入jar

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.4.5</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.4.5</version>
</dependency>
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-configuration2</artifactId><version>2.3</version>
</dependency>

邮箱要打开 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

这里以qq邮箱为例:

点击设置:

点击账户:

开启:

application.yml 文件配置

#暂时改为个人邮箱smtp服务器进行测试
spring:mail:#坑爹的地方:host 通道个人邮箱和企业邮箱通道不同。163的个人邮箱:smtp.163.com ,企业邮箱:smtp.qiye.163.com# 腾讯的,个人smtp.qq.com, 企业的:smtp.exmail.qq.comhost: smtp.qq.comusername: ****@qq.com# 口令是QQ邮箱开通的smtp服务后得到的客户端授权码,不是你的邮箱登录密码password: ****default-encoding: UTF-8properties:mail:smtp:auth: truesocketFactory:class: javax.net.ssl.SSLSocketFactoryport: 465# 开启debug,方便查看邮件发送日志debug: true#这个是自己后续为了方便获取到发送者邮箱的账号
EmaiHelper:util:username: ****@qq.com

工具类 EmaiHelper

package com.myb.util;import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;@Service
public class EmaiHelper {/*** JavaMailSender是Spring Boot在MailSenderPropertiesConfiguration 类中配直好的,该类在 Mail* 自动配置类 MailSenderAutoConfiguration 中导入 因此这里注入 JavaMailSender 就可以使用了*/@Autowiredprivate JavaMailSender mailSender;//从配置文件获取的发件人邮箱@Value("${EmaiHelper.util.username}")private String mailUsername ;/***  发送带附件,支持HTML文件发送的的邮件* @param mailFrom     发件人* @param mailFromNick 发件人昵称* @param mailTo       收件人 多个用,分开* @param cc           抄送人 多个用,分开* @param subject 主题* @param content 内容 支持html形似* @param files 附件 文件路径数组  多个用,分开*/public void sendMail  (String mailFrom, String mailFromNick, String mailTo, String cc,String subject, String content, String files) throws Exception {mailFromNick = isNullString(mailFromNick);mailTo = isNullString(mailTo);cc = isNullString(cc);subject = isNullString(subject);content = isNullString(content);files = isNullString(files);mailFrom = this.mailUsername;MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);/*第二个参数true表示构造一个multipart message类型的邮件,multipart message类型的邮件包含多个正文、附件以及内嵌资源,邮件的表现形式更丰富*/mimeMessageHelper.setFrom(new InternetAddress(mailFromNick + " <" + mailFrom + ">"));mimeMessageHelper.setSubject(subject);mimeMessageHelper.setText(content, true);// 设置多个收件人String[] toAddress = mailTo.split(",");mimeMessageHelper.setTo(toAddress);//多个抄送if (!StringUtils.isEmpty(cc)) {String[] toAddcc = cc.split(",");mimeMessageHelper.setCc(toAddcc);}//多个附件if (!StringUtils.isEmpty(files)){String[] toAddFiles = files.split(",");for (String toAddFile : toAddFiles) {File imgFile = new File(toAddFile);mimeMessageHelper.addAttachment(imgFile.getName(), imgFile);}}} catch (Exception e) {//运行时异常throw new RuntimeException(e.getMessage()); }//发送邮件mailSender.send(mimeMessage);}//判断如果为null就返回""的方法private String isNullString(String str){if (null == str){return "";}return str;}
}

测试


package com.myb.mailUtil.controller;import com.myb.util.EmaiHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
public class TestController {@ResourceEmaiHelper emaiHelper; @RequestMapping("/email")public String testSendAttachment() {//    // 发件人要跟yml配置文件里填写的邮箱一致String mailFrom = "";// 收件人String mailTo = "****@qq.com,****@qq.com";// 抄送String cc = "****@qq.com,****@qq.com";String fillist = "C:\\Users\\Administrator\\Desktop\\Work\\lock_wallpaper.png," +"C:\\Users\\Administrator\\Desktop\\Work\\desk_wallpaper.jpg";String content = "<table border=\"1\">\n" +"    <tr>\n" +"        <td>用户名</td>\n" +"        <td >Ma y b</td>\n" +"    </tr>\n" +"    <tr>\n" +"        <td>年龄</td>\n" +"        <td>1 8 </td>\n" +"    </tr>\n" +"</table>";String result = "发送邮件成功";try {emaiHelper.sendMail(mailFrom, "Mayb", mailTo, cc, "TestMail", content,fillist);} catch (Exception e) {result = "发送邮件失败!";}return  result;}
}

发送邮件工具类 - EmaiHelper相关推荐

  1. jmail组件 java_Jmail发送邮件工具类分享

    import lombok.extern.slf4j.Slf4j; import java.util.Properties; import javax.mail.*; import javax.mai ...

  2. java发送邮件工具类的编写直接复制版(兼补上篇邮箱改密发送邮件)

    上篇关于如何通过邮箱发送修改密码的链接的教程我取的名字叫作<炫酷又实用的发送邮箱链接修改密码保姆级教程>,文章发表之后发现炫酷呢?炫酷在那里?除了几段乏味的代码之外,什么也没有啊,甚至连怎 ...

  3. day037 listener Timer 发送邮件工具类

    1 WEB监听器 1.1 概述 Web监听器就是一个组件,可以对其他的内容,进行监视控制,当被监视的内容,发生指定的行为时,web监听器就可以给出相应的处理方案. 事件源:被监视的内容. 监听器:监视 ...

  4. MailUtil-Java发送邮件工具类

    分享做项目时写的邮件的工具类: 一.准备工作: 1.使用java邮箱发送邮件,需要在邮箱设置中申请开通 POP3/SMTP 服务,以163邮箱为例: 在网页上打开登录163邮箱,点击设置-POP3/S ...

  5. Java发送邮件工具类(可发送匿名邮件)

    为什么80%的码农都做不了架构师?>>>    为了不想到处去下载jar包,我使用maven为我管理,在开始编码这些东西之前,我们先在pom.xml文件中<dependenci ...

  6. 邮箱发送验证码工具类

    1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...

  7. 【工具类】发送邮件的方法

    依赖 <!--javaMail--><dependency><groupId>javax.mail</groupId><artifactId> ...

  8. 发送邮件功能:使用Spring Email、邮件工具类、使用Thymeleaf模板引擎 发送html邮件

    发送邮件 Spring Email 开启自己邮箱的POP3/SMTP服务 导入spring mail 依赖 <!-- https://mvnrepository.com/artifact/org ...

  9. 工具类涉及数据库连接、格式转换、文件操作、发送邮件等等

    工具类涉及数据库连接.格式转换.文件操作.发送邮件等等 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ConnDB.java import java.sql.Connection; impo ...

最新文章

  1. 源码资本深耕“三横九纵”科技助力网聚优秀企业
  2. Mybatis 一对多 结果集映射 简单入门 易懂
  3. YOLO-目标检测中计算AP、MAP方法
  4. 那些在家啃书自学的人,最后都找到工作了吗?
  5. 鲲鹏云HCIA知识总结(二)
  6. pythontk多线程_tkinter是否线程安全(threadsafe)?
  7. 我的osu游戏程序设计(oo)
  8. 基于Ganos百行代码实现亿级矢量空间数据在线可视化
  9. linux十字符木马,Linux系统随机10字符病毒的清除
  10. 数据结构与算法:企业级链表实现(超详细)
  11. zookeeper相关知识与集群搭建
  12. 软件测试常见分辨率测试,如何用imatest测分辨率 imatest软件测试分辨率图文教程...
  13. 【拜小白opencv】15-利用ROI将一幅图像叠加到另一幅图像的指定位置
  14. imap接收邮件服务器怎么填,邮件接收(POP3或IMAP)服务器应该填 – 手机爱问
  15. C#习题之标准体重测试
  16. 2019 年第 34 周 DApp 影响力排行榜 | TokenInsight
  17. [todo] 如何高效工作
  18. 淘宝客如何通过闲鱼引流?淘宝客的推广方法有哪些?
  19. 推荐一款IDEA 快捷键 自动提示插件
  20. C++:求整数num中包含因子k的个数

热门文章

  1. HDOJ--2022
  2. 摩托罗拉手机连接Wifi后提示“网络受限”问题的解决!
  3. linux 刷流量ip,程序员同事问shell脚本刷流量,不讨巧帮他填了一个巨坑
  4. mount.cifs手册
  5. Your ApplicationContext is unlikely tostart due to a @ComponentScan of the defau
  6. 犀浦某校一名计算机系大二男生,大学生恋爱的案例分析
  7. kubernetes部署dashboard可视化插件
  8. 【9008】香甜的黄油
  9. 基于javaweb的医院挂号预约系统
  10. Altium Designer使用技巧总结