前言

这里使用的是spring-boot-starter-mail

当然了,你也可以使用com.sun.mail(javax.mail)Hutool对这个进行了封装,

但是我的项目是springboot3javax改为了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,附件的更多相关文章

  1. Spring Boot Starter 介绍

    http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ...

  2. spring boot使用常规发送邮件

    spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...

  3. spring -boot s-tarter 详解

    Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合.你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符.例如,如果你想使用Sprin ...

  4. SpringBoot 之Spring Boot Starter依赖包及作用

    Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spri ...

  5. Spring Boot Starter列表

    转自:http://blog.sina.com.cn/s/blog_798f713f0102wiy5.html Spring Boot Starter 基本的一共有43种,具体如下: 1)spring ...

  6. Spring Boot (一): Spring Boot starter自定义

    前些日子在公司接触了spring boot和spring cloud,有感于其大大简化了spring的配置过程,十分方便使用者快速构建项目,而且拥有丰富的starter供开发者使用.但是由于其自动化配 ...

  7. Spring boot starter pom的依赖关系说明

    Spring Boot 通过starter依赖为项目的依赖管理提供帮助.starter依赖起始就是特殊的maven依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖. sp ...

  8. 创建自己的Spring Boot Starter

    抽取通用模块作为项目的一个spring boot starter.可参照mybatis的写法. IDEA创建Empty Project并添加如下2个module,一个基本maven模块,另一个引入sp ...

  9. 自己写spring boot starter

    自己写spring boot starter 学习了:<spring boot实战>汪云飞著 6.5.4节 pom.xml <project xmlns="http://m ...

  10. 自定义的Spring Boot starter如何设置自动配置注解

    本文首发于个人网站: 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触 ...

随机推荐

  1. 如何用js精确计算一行文字的宽度

    之前有做过一个业务,需要在文本框输入文字的时候动态计算一行文字的宽度.并由此知道当前输入的这段文字会有几行. 如何计算? 每个文字的个数*宽度?理论上可行,但是有一个问题是不同类型的文字对应的宽度是不 ...

  2. [Winform]在Form里显示模态对话框ModalDialog

    问题 如何在WinForm的一个Form里面弹出一个模态Dialog? 背景 程序的框架是Winform,只有一个窗口MainForm.MainForm里面是一个TabControl,每个TabPag ...

  3. 面试官:工作中优化MySQL的手段有哪些?

    MySQL 是面试中必问的模块,而 MySQL 中的优化内容又是常见的面试题,所以本文来看"工作中优化MySQL的手段有哪些?". 工作中常见的 MySQL 优化手段分为以下五大类 ...

  4. 【调研】Vision Language Model Safety

    Adversarial Attacks White-box Attacks Task-specific Attacks 的目标是针对某个具体的任务(如图像描述生成.指代表达理解等),通过精心设计的对抗 ...

  5. StringBuilder案例

    1.案例一 如图 这里无法使用反转方法的原因是,s属于String类型,而反转的方法存在于StringBuilder类型,所以我们要将s的类型转换为StringBuilder String--> ...

  6. 学习Django【1】模型

    编辑 models.py 文件,改变模型. 运行 python manage.py makemigrations 为模型的改变生成迁移文件. 运行 python manage.py migrate 来 ...

  7. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(12)

    1.问题描述: pushdeviceid的长度是固定的吗? 解决方案: 在鸿蒙系统中,设备ID的长度是固定的. 2.问题描述: 通过REST API三方推送IM类消息,如何实现应用处于前台时不展示三方 ...

  8. 分享 3 款基于 .NET 开源且免费的远程桌面工具

    前言 今天大姚给大家分享 3 款基于 .NET 开源.免费.功能强大的远程桌面工具,希望可以给大家的远程工作和学习带来便利. 1Remote 1Remote是一款基于 .NET 开源(GPL-3.0 ...

  9. Java并发编程实战-多线程任务执行

    Executor框架与线程池(ThreadPoolExecutor) Executor框架的组成 组件 作用 Executor 基础接口,仅定义execute(Runnable)方法,用于执行任务. ...

  10. python同时给多个邮箱地址发送邮件

    这个帖子内讲了怎么发邮件:https://www.cnblogs.com/becks/p/14589314.html 下图红框内于发送目标邮件地址有关 讲红框内信息修改为下方代码,即可实现向多人发送邮 ...