Spring Boot - 发送电子邮件
文章目录
- 环境
- 发送邮件
- 邮箱设置
- 项目结构
- 配置
- 编码
- 测试
- 参考
环境
操作系统:
Windows 10 x64
集成开发环境:
Spring Tool Suite 4
Version: 4.14.0.RELEASE
Build Id: 202203131612
发送邮件
邮箱设置
我使用的 163 邮箱提供的服务。首先,登录 163 邮箱,设置如下:
设置 > POP3/SMTP/IMAP
开启 IMAP/SMTP 服务:
使用你的手机发送短信验证:
验证完成,得到授权密码,记住:
邮箱服务设置完成:
项目结构
新建 Spring Starter Project,最终项目结构如下:
配置
项目创建完成,pom.xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath /> <!-- lookup parent from repository --></parent><groupId>com.mk</groupId><artifactId>Spring-Boot-Send-Email</artifactId><version>0.0.1-SNAPSHOT</version><name>Spring-Boot-Send-Email</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
</project>
修改 application.yml 配置文件,邮件服务配置参数:
server:port: 8080spring:mail:host: smtp.163.comusername: XXX@163.compassword: XXXdefault-encoding: UTF-8protocol: smtpproperties:mail:smtp:auth: truestarttls:enable: truerequired: true
编码
email.html 模板:
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8" />
</head><body><p>验证码:<span th:text="${code}">{code}</span></p>
</body>
</html>
提供邮件发送服务的控制器类:
package com.mk.controller;import java.io.File;import javax.mail.internet.MimeMessage;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;import lombok.extern.slf4j.Slf4j;@RestController
@RequestMapping("/email")
@Slf4j
public class EmailController {@Autowiredprivate JavaMailSender jms;@Value("${spring.mail.username}")private String addresser; // 发信人private String addressee = "xxx@qq.com"; // 收信人@Autowiredprivate TemplateEngine templateEngine;@RequestMapping("send-simple-email")public long sendSimpleEmail() {try {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(addresser);message.setTo(addressee);message.setSubject("一封简单的邮件");message.setText("验证码:1234");jms.send(message);} catch (Exception e) {log.error("Exception: ", e);}return System.currentTimeMillis();}@GetMapping("send-html-email")public long sendHtmlEmail() {try {MimeMessage message = jms.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(addresser);helper.setTo(addressee);helper.setSubject("一封 HTML 格式的邮件");String content = "<p style='color: #00ff00;'>验证码:1234</p>";helper.setText(content, true);jms.send(message);} catch (Exception e) {log.error("Exception: ", e);}return System.currentTimeMillis();}@GetMapping("send-attachment-email")public long sendAttachmentEmail() {try {MimeMessage message = jms.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(addresser); helper.setTo(addressee);helper.setSubject("一封带附件的邮件");helper.setText("附件:光头强的个人简历");FileSystemResource file = new FileSystemResource(new File("F:/temp/光头强的个人简历.pdf"));helper.addAttachment("光头强的个人简历.pdf", file);jms.send(message);} catch (Exception e) {log.error("Exception: ", e);}return System.currentTimeMillis();}@GetMapping("send-inline-email")public long sendInlineEmail() {try {MimeMessage message = jms.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(addresser); helper.setTo(addressee);helper.setSubject("一封带静态资源的邮件");helper.setText("<img src='cid:img' style='width: 70px; height: 100px;' />", true);helper.addInline("img", new FileSystemResource(new File("F:/temp/光头强.png")));jms.send(message);} catch (Exception e) {log.error("Exception: ", e);}return System.currentTimeMillis();}@GetMapping("send-template-email")public long sendTemplateEmail() {try {MimeMessage message = jms.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(addresser); helper.setTo(addressee);helper.setSubject("模板邮件");Context context = new Context();context.setVariable("code", "1234");String template = templateEngine.process("email", context); // 指向模板 templates/email.htmlhelper.setText(template, true);jms.send(message);} catch (Exception e) {log.error("Exception: ", e);}return System.currentTimeMillis();}
}
测试
依次访问:
- http://localhost:8080/email/send-simple-email
- http://localhost:8080/email/send-html-email
- http://localhost:8080/email/send-attachment-email
- http://localhost:8080/email/send-inline-email
- http://localhost:8080/email/send-template-email
在目标收信人邮箱中,可以收到:
参考
SpringBoot 发送电子邮件
Spring Boot - 发送电子邮件相关推荐
- Spring boot 发送手机验证码
由于阿里云现在的短信签名无法通过申请,所以我这里选择了中国网建SMS短信平台(手机号注册即用,有免费赠送的几条短信测试) demo代码地址:https://github.com/mer97/sprin ...
- Spring 实现发送电子邮件的两种方法
1.通过xml文件配置主要属性: xml文件:test.xml [xhtml] view plaincopy print? <bean id="mailSender" ...
- 阿里云服务器spring boot 发送QQ邮件25端口被封怎么办
application.properties 这是使用指定465端口 spring.mail.host=smtp.qq.com spring.mail.port=465 spring.mail.us ...
- spring boot发送普通文本邮件/HTML邮件/附件邮件/图片邮件完整代码
配置文件 Controller层
- Spring Boot笔记-发送消息给RabbitMQ
目录 基本概念 代码及演示 基本概念 RabbitMQ 消息中间件是在消息的传输过程中保存消息的容器.消息中间件充当中间人的作用将源消息发送到目标消息. 队列的主要目的是提供路由并保证消息的传递:如果 ...
- spring boot 使用javaMailSender 发送qq邮箱验证码
一 qq邮箱设置 1登录邮箱打开设置 2点击账号 3开启 POP3/SMTP服务 4保存密钥(这个一定要保存后面在java里面要调用) 二. spring boot代码设置 1.maven导入jar包 ...
- Chat 优选 | 纯洁的微笑教你使用 Spring Boot 开发邮件系统
邮件发送是互联网企业中必备的功能之一,应用场景非常广泛,比较常见的有:用户注册.忘记密码.监控提醒.企业营销等. 大多数互联网企业都会将邮件发送抽取为一个独立的微服务,对外提供接口来支持各种类型的邮件 ...
- Spring Boot—13、发送电子邮件
代码地址:https://github.com/huiyiwu/spring-boot-simple/spring-boot-email Spring Framework提供了使用JavaMailSe ...
- 邮件发送类_10 分钟实现 Spring Boot 发生邮件功能
基础知识 什么是SMTP? 什么是IMAP? 什么是POP3? IMAP和POP3协议有什么不同呢? 进阶知识 什么是JavaMailSender和JavaMailSenderImpl? 如何通过Ja ...
最新文章
- c 语言中unsigned char类型变量占用内存大小,C数据类型
- 结对-贪吃蛇游戏-开发过程
- 问题之传递参数名和接收参数名要一致。
- Java randomString
- datetimepicker获取年月日_bootstrap-datetimepicker 获取时间
- 渠道是创业企业与消费者或者用户建立联系的桥梁
- ❤️Bean的自动装配(详细)
- Ubuntu 12.04装五笔,同时又可以打拼音。
- PowerShell_零基础自学课程_9_高级主题:静态类和类的操作
- ofbiz碰到问题收集
- js分割字符串转数组
- JAVA IO流读取中文出现乱码
- 教你写脚本屏蔽百度广告 csdn广告
- VS2013新建项目出现脚本错误的解决办法
- .net mvc 文件压缩打包下载
- UVA Team Queue
- python画图方法_python画图的两种方法
- 四阶幻方c语言编程,13年 第四届 蓝桥杯C语言C组 第4题 幻方填空
- Mysql开启3306端口远程访问
- iOS开发入门——基础篇一
热门文章
- 细说Windows系统主流激活的原理与弊端!
- Flask之cookie、session、闪现
- PDFProcessor新功能:不下载,直接预览pdf
- 【设计模式】我终于读懂了观察者模式。。。
- Java:格林威治时间(GMT)字符串转Date
- 测试工程师提高质量的OKR该如何写?
- 数据结构(c++)--宝岛探险
- 百囚徒问题(100 prisoners problem)最佳策略Python代码实现(带详细注释)
- Unknown custom element: <aa> - did you register the component correctly?
- 出租车智能终端与外设通讯实践