如何在 spring boot 发邮件(qq邮箱为例)

SpringBoot集成SMTP实现邮件发送:配置与实战
本文介绍了如何在SpringBoot项目中添加依赖,配置SMTP邮件服务,获取并使用配置文件中的密码,以及创建发送邮件的实体类和工具类。实例演示了在接口超时时自动发送邮件的功能。
该文章已生成可运行项目,

目录

添加依赖

配置文件

获取配置文件中的 password

实战代码


添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置文件

在 application.yml 文件中的邮件相关的配置数据

spring:
  mail:
    host: smtp.qq.com # qq邮箱的SMTP
    username: xxx@qq.com # 发送方的qq邮箱
    password: xxx # smtp密码(是16位授权码,不是邮箱密码)
    receiver: xxx@jd.com # 接收方邮箱,随意填写
    default-encoding: UTF-8 # 编码格式
    protocol: smtp # SMTP邮件协议
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

获取配置文件中的 password

在 pc 端打开qq邮箱点击设置

点击邮箱

拉到下面

扫二维码后,向绑定手机发送短信后,即可获得

实战代码

创建发送邮件的实体类

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class MailBean {
	/**
	 * 邮件接收人
	 */
	private String recipient;

	/**
	 * 邮件主题
	 */
	private String subject;

	/**
	 * 邮件内容
	 */
	private String content;
}

创建发送邮件的工具类

​
/**
 * 发送邮件
 */
@Component
@RequiredArgsConstructor
public class MailUtil {
	/**
	 * 邮件发送者
	 */
	@Value("${spring.mail.username}")
	private String MAIL_SENDER;

	/**
	 * 注入QQ发送邮件的bean
	 */
	private final JavaMailSender javaMailSender;

	public void sendMail(String mail,String content) {
		MailBean mailBean = new MailBean();
		//接收者
		mailBean.setRecipient(mail);
		//标题
		mailBean.setSubject("xxx");
		//内容主体
		mailBean.setContent(content);
		try {
			SimpleMailMessage mailMessage = new SimpleMailMessage();
			//发送者
			mailMessage.setFrom(MAIL_SENDER);
			//接收者
			mailMessage.setTo(mailBean.getRecipient());
			//邮件标题
			mailMessage.setSubject(mailBean.getSubject());
			//邮件内容
			mailMessage.setText(mailBean.getContent());
			//发送邮箱
			javaMailSender.send(mailMessage);
		} catch (Exception e) {
			throw new CustomException(500,"邮件发送失败");
		}
	}
}

​

在业务中使用,我这里是当一个接口响应时间超过 x ms就会发送邮件告警功能

@Component
@RequiredArgsConstructor
public class ResponseTimeManager {

	private final MailUtil mailUtil;

	private final Logger logger = LoggerFactory.getLogger(ResponseTimeManager.class);

	/**
	 * 算法调用接口的超时设置为 x ms
	 */
	private static final Long IDENTIFICATION_TIMEOUT = xL;

	public void timeoutProcessing(ClassAndMethod response) {
		String send = "xxx@qq.com";
		String content = "xxx";

		//算法调用
		if (response.getClassName().equals(IDENTIFICATION_INVOKE.getClassName())
				&& response.getMethodName().equals(IDENTIFICATION_INVOKE.getMethodName())
				&& response.getResponseTime() >= IDENTIFICATION_TIMEOUT) {
			content = "算法接口调用超时";
			mailUtil.sendMail(send, content);
			logger.info("======发送邮件成功======");
		}

	}
}

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值