使用spring-boot-starter-mail发送邮件,HTML,附件
前言
这里使用的是spring-boot-starter-mail
,
当然了,你也可以使用com.sun.mail(javax.mail)
,Hutool
对这个进行了封装,
但是我的项目是springboot3
,javax
改为了jakarta
,导致我无法使用Hutool封装的(在我写这篇文章时)
所以,自己写咯,既然自己写,那就用springboot提供的mail包咯
POM依赖
<!-- 邮件收发 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
完整的测试类
package cn.daenx.myadmin;
import jakarta.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* 使用spring-boot-starter-mail发送邮件
*
* @author DaenMax
*/
public class testSend {
public static void main(String[] args) {
// String toEmail = "1330166565@qq.com,wangjingen163@163.com";
String toEmail = "1330166565@qq.com";
//发送普通文字邮件,不带附件
// Boolean aBoolean = sendEmail(toEmail, "测试阿萨德", "测试邮件111", false, null);
//发送HTML邮件,不带附件
// Boolean aBoolean = sendEmail(toEmail, "测试HHHH", "<h1>分手吧</h1>", true, null);
//发送HTML邮件,带附件
List<File> list = new ArrayList<>();
File file1 = new File("C:\\Users\\13301\\Desktop\\接口测试.e");
File file2 = new File("C:\\Users\\13301\\Desktop\\1.txt");
list.add(file1);
list.add(file2);
Boolean aBoolean = sendEmail(toEmail, "测试LLLL", "<h1>分手吧</h1>", true, list);
System.out.println("发送邮件结果:" + aBoolean);
}
/**
* 发送邮件
* 按照系统邮箱配置的使用模式进行选择邮箱号
*
* @param toEmail 多个用,隔开
* @param subject
* @param content
* @param isHtml 是否是HTML
* @param fileList 附件内容,留空则无
* @return
*/
public static Boolean sendEmail(String toEmail, String subject, String content, Boolean isHtml, List<File> fileList) {
JavaMailSenderImpl javaMailSender = getJavaMailSenderImpl();
//以下两种写法都可以
// String from = "1330166564@qq.com";
String from = "MyAdmin<1330166564@qq.com>";
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper;
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom(from);
mimeMessageHelper.setTo(toEmail.split(","));
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content, isHtml);
if (fileList != null) {
for (File file : fileList) {
mimeMessageHelper.addAttachment(file.getName(), file);
}
}
javaMailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
public static JavaMailSenderImpl getJavaMailSenderImpl() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.qq.com");
javaMailSender.setUsername("5201314@qq.com");
javaMailSender.setPassword("ewduxxxxxxxhgd");
javaMailSender.setPort(587);
javaMailSender.setDefaultEncoding("UTF-8");
javaMailSender.setProtocol(JavaMailSenderImpl.DEFAULT_PROTOCOL);
Properties properties = new Properties();
properties.setProperty("mail.smtp.timeout", "25000");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.socketFactoryClass", "javax.net.ssl.SSLSocketFactory");
javaMailSender.setJavaMailProperties(properties);
return javaMailSender;
}
}
最简单的文字邮件,测试类
package cn.daenx.myadmin;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
public class testSend {
public static void main(String[] args) {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("smtp.qq.com");
javaMailSender.setUsername("5201314@qq.com");
javaMailSender.setPassword("ewduxxxxxxxhgd");
javaMailSender.setPort(587);
javaMailSender.setDefaultEncoding("UTF-8");
javaMailSender.setProtocol(JavaMailSenderImpl.DEFAULT_PROTOCOL);
Properties properties = new Properties();
properties.setProperty("mail.smtp.timeout", "25000");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.socketFactoryClass", "javax.net.ssl.SSLSocketFactory");
javaMailSender.setJavaMailProperties(properties);
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("测试发送邮件3");
//message.setFrom("5201314@qq.com");
message.setFrom("MyAdmin<5201314@qq.com>");
String toEmail = "1330166565@qq.com,testwy@163.com";
message.setTo(toEmail.split(","));
message.setText("这是一封测试邮件,收到即为正常");
javaMailSender.send(message);
}
}
使用spring-boot-starter-mail发送邮件,HTML,附件的更多相关文章
- Spring Boot Starter 介绍
http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ...
- spring boot使用常规发送邮件
spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...
- spring -boot s-tarter 详解
Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合.你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符.例如,如果你想使用Sprin ...
- SpringBoot 之Spring Boot Starter依赖包及作用
Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spri ...
- Spring Boot Starter列表
转自:http://blog.sina.com.cn/s/blog_798f713f0102wiy5.html Spring Boot Starter 基本的一共有43种,具体如下: 1)spring ...
- Spring Boot (一): Spring Boot starter自定义
前些日子在公司接触了spring boot和spring cloud,有感于其大大简化了spring的配置过程,十分方便使用者快速构建项目,而且拥有丰富的starter供开发者使用.但是由于其自动化配 ...
- Spring boot starter pom的依赖关系说明
Spring Boot 通过starter依赖为项目的依赖管理提供帮助.starter依赖起始就是特殊的maven依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖. sp ...
- 创建自己的Spring Boot Starter
抽取通用模块作为项目的一个spring boot starter.可参照mybatis的写法. IDEA创建Empty Project并添加如下2个module,一个基本maven模块,另一个引入sp ...
- 自己写spring boot starter
自己写spring boot starter 学习了:<spring boot实战>汪云飞著 6.5.4节 pom.xml <project xmlns="http://m ...
- 自定义的Spring Boot starter如何设置自动配置注解
本文首发于个人网站: 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触 ...
随机推荐
- 这几天用ng5做了一个俄罗斯方块
为什么要做这个东西呢? 嗯 为了证明自己会ng吧,最主要的是这几天的工作全是静态页,实在无聊枯燥的很.当然了,肯定还有其他妙不可言的原因,这里不想说出来. 我也忘记我是什么时候有想到用ng做俄罗斯方块 ...
- 朱朝兵《Web前端开发之HTML5+CSS3快速入门》课程资料在线学习
<Web前端开发之HTML5+CSS3快速入门> [课程简介]本课程由一直专注前端技术与Discuz模板设计与制作!DZ起点网创始人朱朝兵出品,通过本课程学习,即可掌握html5的基本结构 ...
- BUUCTF---robomunication
略有抽象,第一次接触直接上题解吧
- mosquitto的基本参数使用
当使用mosquitto_pub命令时,可以使用多个参数来配置发布行为.以下是mosquitto_pub命令的一些常见参数及其详细说明: -h, --host <hostname>:指定连 ...
- Unity性能优化-降低功耗,发热量,耗电量之OnDemandRendering篇
公司游戏项目,手机运行严重发烫,耗电量飞快.在暂时无法做其他美术性和技术性优化的情况下,我写了这个公司内部文档,并做了个实验,今天干脆公布出来,希望对大家有用. --官方文档: Unity - Scr ...
- 搜索算法1——聊聊dfs与回溯
搜索算法1--聊聊dfs与回溯 目录 1.dfs 的概念 $\ \ \ $1.1 dfs 的概念 2.dfs 的做法 $\ \ \ $2.1 为什么要用 dfs $\ \ \ $2.2 dfs 如何实 ...
- springmvc实现转发和重定向
一. @RequestMapping("/testVoid") public String testVoid(HttpServletRequest request){ //转发方式 ...
- Hystrix两种隔离方式对比
在微服务架构中,我们不可避免的与Hystrix打交道,最近在面试过程中,也总是被问到Hystrix两种熔断方式的区别,今天,就给大家做个小结. 首先,Hystrix熔断方式主要有两种: 线程池隔离 ...
- kali安装docker环境
Docker需要Linux内核大于 3.10 并且是 64位 的,可以用 uname -a 可以查看是否符合要求 uname -a Linux kali 4.17.0-kali1-amd64 #1 S ...
- Jmeter+Ant+Jenkins接口自动化测试(三)_Ant配置及Jenkins持续集成
前言: 本来想多分几部分,但是都是抽时间总结的,也就不润色了,直接三板斧,结束. 特别提示: 知识是用来分享的,但是也要尊重作者的权益,转载请注明出处,未经本人允许不可用于商业目的. Ant构建文件配 ...