当前位置: 首页 > news >正文

【Spring Boot】发送邮件功能

发送邮件功能

    • 一.pom.xml文件添加邮件依赖
    • 二.发送邮件信息
      • (1)固定配置在application.yml
      • (2)发送邮箱配成活
      • (3)底层发送邮件方法
      • (4)QQ邮箱开通smtp服务
      • (5)网易邮箱开通smtp服务

一.pom.xml文件添加邮件依赖

		<!-- 发送邮件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

二.发送邮件信息

有两种方式配置:固定配置在application.yml中,或者将发送邮箱配成活的参数
注意:发送者必须开通了smtp服务,(4)和(5)目录中介绍开通smtp服务

备注:host配置
网易邮箱:smtp.163.com
QQ邮箱:smtp.qq.com

(1)固定配置在application.yml

在application.yml中配置

spring:mail:host: smtp.163.com #邮件服务器地址port: 465 #端口号username: 邮箱地址password: 开通smtp服务获取的授权码default-encoding: UTF-8 #默认编码格式properties:mail:debug: true #启动debug调试smtp:auth: truessl:enable: truestarttls:enable: truerequired: true

发送邮件接口

@RequiredArgsConstructor
@RestController
public class SendEmailController
{
private final JavaMailSender mailSender;
// 发送邮件接口
public void sendEmail() {try {SendMail.sendEmail(mailSender, username, dto.getContent(), dto.getFileName(), dto.getReUserMail());} catch (Exception e) {e.printStackTrace();}}  
}

(2)发送邮箱配成活

不需要在application.yml中配置信息

public class SendEmailController {public void sendEmail() {// 邮箱配置String host = "smtp.163.com";Integer port = 465;String username = "邮箱";String password = "授权密码";String content = "发送内容";String fileName = "发送主题";String reUserMail = "收件人";try {SendMail.sendEmail(host, port, username, password, content, fileName, reUserMail);} catch (Exception e) {e.printStackTrace();}}
}

(3)底层发送邮件方法

import lombok.extern.slf4j.Slf4j;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.internet.*;
import java.util.Properties;@Slf4j
public class SendMail {/**** @param host 邮件服务器地址* @param port 端口号* @param username 发送者邮箱* @param password 授权密码* @param content 内容* @param fileName 主题* @param reUserMail 收件人邮箱*/public static void sendEmail(String host, int port, String username, String password, String content, String fileName, String reUserMail){JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost(host);mailSender.setPort(port);mailSender.setUsername(username);mailSender.setPassword(password);mailSender.setDefaultEncoding("utf-8");Properties javaMailProperties = mailSender.getJavaMailProperties();javaMailProperties.setProperty("mail.smtp.auth", "true");javaMailProperties.setProperty("mail.smtp.ssl.enable", "true");javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");javaMailProperties.setProperty("mail.smtp.starttls.required", "true");javaMailProperties.setProperty("mail.debug", "true");//启用调试javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒mailSender.setJavaMailProperties(javaMailProperties);sendEmail(mailSender, username, content, fileName, reUserMail);}/*** 发送邮件内容* @param mailSender* @param sender 发送人邮箱* @param content 发送内容* @param fileName 主题* @param reUserMail 收件人邮箱*/public static void sendEmail(JavaMailSender mailSender, String sender, String content, String fileName, String reUserMail) {MimeMessage message = null;try {message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);/**发送者邮箱,即为开通了smtp服务的邮箱*/helper.setFrom(sender);/**发送到的邮箱*/helper.setTo(reUserMail);helper.setSubject("主题:" + fileName);helper.setText("带附件的邮件内容");helper.setText(content, true);mailSender.send(message);} catch (Exception e){e.printStackTrace();}}}

(4)QQ邮箱开通smtp服务

在邮箱->设置->账号->开通POP3/SMTP服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)网易邮箱开通smtp服务

邮箱->设置->POP3/SMTP/IMAP->开通POP3/SMTP和IMAP/SMTP服务
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/217377.html

相关文章:

  • ELK问题整理
  • 《黑客帝国:破解编程密码》——探索编程世界的奥秘
  • 【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击
  • 路由器基础(十二):IPSEC VPN配置
  • Python 获取cpu、内存利用率
  • Apache ECharts简介和相关操作
  • 怎么看待工信部牵头推动人形机器人发展
  • Hikari源码分析
  • 修改YOLOv5的模型结构
  • React 与 React Native 区别
  • Android 12.0 系统system模块开启禁用adb push和adb pull传输文件功能
  • 基于单片机的衣物消毒清洗机系统设计
  • 将 UniLinks 与 Flutter 集成(安卓 AppLinks + iOS UniversalLinks)
  • Spring-Spring 之底层架构核心概念解析
  • 电脑版WPS怎么将更新目录加到快速访问栏
  • 保障效率与可用,分析Kafka的消费者组与Rebalance机制
  • “1-5-15”原则:中国联通数字化监控平台可观测稳定性保障实践
  • LinkedList详解-Deque接口链表实现方案
  • 【考研数据结构代码题1】二叉搜索树的插入与查找
  • 世微 平均电流型降压恒流驱动器 电动摩托车LED灯小钢炮驱动IC AP5218
  • docker 下安装mysql8.0
  • Android MVI架构的深入解析与对比
  • 达梦数据库表空间管理常用SQL
  • Flutter 组件集录 | InheritedNotifier 内置状态管理组件
  • NOIP2023模拟10联测31 涂鸦
  • 【Python基础知识一】基本语法、常用数据类型等
  • 听听ChatGPT对IT行业的发展和就业前景的看法
  • 〖程序员的自我修养 - 认知剖析篇⑤〗- 选择前端还是后端?
  • Rust语言初步
  • BIMILLC算法源码解析