发送邮件工具类 - EmaiHelper
首先导入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相关推荐
- jmail组件 java_Jmail发送邮件工具类分享
import lombok.extern.slf4j.Slf4j; import java.util.Properties; import javax.mail.*; import javax.mai ...
- java发送邮件工具类的编写直接复制版(兼补上篇邮箱改密发送邮件)
上篇关于如何通过邮箱发送修改密码的链接的教程我取的名字叫作<炫酷又实用的发送邮箱链接修改密码保姆级教程>,文章发表之后发现炫酷呢?炫酷在那里?除了几段乏味的代码之外,什么也没有啊,甚至连怎 ...
- day037 listener Timer 发送邮件工具类
1 WEB监听器 1.1 概述 Web监听器就是一个组件,可以对其他的内容,进行监视控制,当被监视的内容,发生指定的行为时,web监听器就可以给出相应的处理方案. 事件源:被监视的内容. 监听器:监视 ...
- MailUtil-Java发送邮件工具类
分享做项目时写的邮件的工具类: 一.准备工作: 1.使用java邮箱发送邮件,需要在邮箱设置中申请开通 POP3/SMTP 服务,以163邮箱为例: 在网页上打开登录163邮箱,点击设置-POP3/S ...
- Java发送邮件工具类(可发送匿名邮件)
为什么80%的码农都做不了架构师?>>> 为了不想到处去下载jar包,我使用maven为我管理,在开始编码这些东西之前,我们先在pom.xml文件中<dependenci ...
- 邮箱发送验证码工具类
1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...
- 【工具类】发送邮件的方法
依赖 <!--javaMail--><dependency><groupId>javax.mail</groupId><artifactId> ...
- 发送邮件功能:使用Spring Email、邮件工具类、使用Thymeleaf模板引擎 发送html邮件
发送邮件 Spring Email 开启自己邮箱的POP3/SMTP服务 导入spring mail 依赖 <!-- https://mvnrepository.com/artifact/org ...
- 工具类涉及数据库连接、格式转换、文件操作、发送邮件等等
工具类涉及数据库连接.格式转换.文件操作.发送邮件等等 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ConnDB.java import java.sql.Connection; impo ...
最新文章
- 源码资本深耕“三横九纵”科技助力网聚优秀企业
- Mybatis 一对多 结果集映射 简单入门 易懂
- YOLO-目标检测中计算AP、MAP方法
- 那些在家啃书自学的人,最后都找到工作了吗?
- 鲲鹏云HCIA知识总结(二)
- pythontk多线程_tkinter是否线程安全(threadsafe)?
- 我的osu游戏程序设计(oo)
- 基于Ganos百行代码实现亿级矢量空间数据在线可视化
- linux十字符木马,Linux系统随机10字符病毒的清除
- 数据结构与算法:企业级链表实现(超详细)
- zookeeper相关知识与集群搭建
- 软件测试常见分辨率测试,如何用imatest测分辨率 imatest软件测试分辨率图文教程...
- 【拜小白opencv】15-利用ROI将一幅图像叠加到另一幅图像的指定位置
- imap接收邮件服务器怎么填,邮件接收(POP3或IMAP)服务器应该填 – 手机爱问
- C#习题之标准体重测试
- 2019 年第 34 周 DApp 影响力排行榜 | TokenInsight
- [todo] 如何高效工作
- 淘宝客如何通过闲鱼引流?淘宝客的推广方法有哪些?
- 推荐一款IDEA 快捷键 自动提示插件
- C++:求整数num中包含因子k的个数
热门文章
- HDOJ--2022
- 摩托罗拉手机连接Wifi后提示“网络受限”问题的解决!
- linux 刷流量ip,程序员同事问shell脚本刷流量,不讨巧帮他填了一个巨坑
- mount.cifs手册
- Your ApplicationContext is unlikely tostart due to a @ComponentScan of the defau
- 犀浦某校一名计算机系大二男生,大学生恋爱的案例分析
- kubernetes部署dashboard可视化插件
- 【9008】香甜的黄油
- 基于javaweb的医院挂号预约系统
- Altium Designer使用技巧总结