文章目录

  • 环境
  • 发送邮件
    • 邮箱设置
    • 项目结构
    • 配置
    • 编码
    • 测试
  • 参考

环境

操作系统:

Windows 10 x64

集成开发环境:

Spring Tool Suite 4
Version: 4.14.0.RELEASE
Build Id: 202203131612

发送邮件

邮箱设置

我使用的 163 邮箱提供的服务。首先,登录 163 邮箱,设置如下:

  1. 设置 > POP3/SMTP/IMAP

  2. 开启 IMAP/SMTP 服务:

  3. 使用你的手机发送短信验证:

  4. 验证完成,得到授权密码,记住:

  5. 邮箱服务设置完成:

项目结构

新建 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();}
}

测试

依次访问:

  1. http://localhost:8080/email/send-simple-email
  2. http://localhost:8080/email/send-html-email
  3. http://localhost:8080/email/send-attachment-email
  4. http://localhost:8080/email/send-inline-email
  5. http://localhost:8080/email/send-template-email

在目标收信人邮箱中,可以收到:

参考

SpringBoot 发送电子邮件

Spring Boot - 发送电子邮件相关推荐

  1. Spring boot 发送手机验证码

    由于阿里云现在的短信签名无法通过申请,所以我这里选择了中国网建SMS短信平台(手机号注册即用,有免费赠送的几条短信测试) demo代码地址:https://github.com/mer97/sprin ...

  2. Spring 实现发送电子邮件的两种方法

     1.通过xml文件配置主要属性: xml文件:test.xml [xhtml] view plaincopy print? <bean id="mailSender"  ...

  3. 阿里云服务器spring boot 发送QQ邮件25端口被封怎么办

    application.properties  这是使用指定465端口 spring.mail.host=smtp.qq.com spring.mail.port=465 spring.mail.us ...

  4. spring boot发送普通文本邮件/HTML邮件/附件邮件/图片邮件完整代码

    配置文件 Controller层

  5. Spring Boot笔记-发送消息给RabbitMQ

    目录 基本概念 代码及演示 基本概念 RabbitMQ 消息中间件是在消息的传输过程中保存消息的容器.消息中间件充当中间人的作用将源消息发送到目标消息. 队列的主要目的是提供路由并保证消息的传递:如果 ...

  6. spring boot 使用javaMailSender 发送qq邮箱验证码

    一 qq邮箱设置 1登录邮箱打开设置 2点击账号 3开启 POP3/SMTP服务 4保存密钥(这个一定要保存后面在java里面要调用) 二. spring boot代码设置 1.maven导入jar包 ...

  7. Chat 优选 | 纯洁的微笑教你使用 Spring Boot 开发邮件系统

    邮件发送是互联网企业中必备的功能之一,应用场景非常广泛,比较常见的有:用户注册.忘记密码.监控提醒.企业营销等. 大多数互联网企业都会将邮件发送抽取为一个独立的微服务,对外提供接口来支持各种类型的邮件 ...

  8. Spring Boot—13、发送电子邮件

    代码地址:https://github.com/huiyiwu/spring-boot-simple/spring-boot-email Spring Framework提供了使用JavaMailSe ...

  9. 邮件发送类_10 分钟实现 Spring Boot 发生邮件功能

    基础知识 什么是SMTP? 什么是IMAP? 什么是POP3? IMAP和POP3协议有什么不同呢? 进阶知识 什么是JavaMailSender和JavaMailSenderImpl? 如何通过Ja ...

最新文章

  1. c 语言中unsigned char类型变量占用内存大小,C数据类型
  2. 结对-贪吃蛇游戏-开发过程
  3. 问题之传递参数名和接收参数名要一致。
  4. Java randomString
  5. datetimepicker获取年月日_bootstrap-datetimepicker 获取时间
  6. 渠道是创业企业与消费者或者用户建立联系的桥梁
  7. ❤️Bean的自动装配(详细)
  8. Ubuntu 12.04装五笔,同时又可以打拼音。
  9. PowerShell_零基础自学课程_9_高级主题:静态类和类的操作
  10. ofbiz碰到问题收集
  11. js分割字符串转数组
  12. JAVA IO流读取中文出现乱码
  13. 教你写脚本屏蔽百度广告 csdn广告
  14. VS2013新建项目出现脚本错误的解决办法
  15. .net mvc 文件压缩打包下载
  16. UVA Team Queue
  17. python画图方法_python画图的两种方法
  18. 四阶幻方c语言编程,13年 第四届 蓝桥杯C语言C组 第4题 幻方填空
  19. Mysql开启3306端口远程访问
  20. iOS开发入门——基础篇一

热门文章

  1. 细说Windows系统主流激活的原理与弊端!
  2. Flask之cookie、session、闪现
  3. PDFProcessor新功能:不下载,直接预览pdf
  4. 【设计模式】我终于读懂了观察者模式。。。
  5. Java:格林威治时间(GMT)字符串转Date
  6. 测试工程师提高质量的OKR该如何写?
  7. 数据结构(c++)--宝岛探险
  8. 百囚徒问题(100 prisoners problem)最佳策略Python代码实现(带详细注释)
  9. Unknown custom element: <aa> - did you register the component correctly?
  10. 出租车智能终端与外设通讯实践