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

目录

添加依赖

配置文件

获取配置文件中的 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("======发送邮件成功======");
		}

	}
}

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot可以使用JavaMailSender来发送邮件。下面是使用QQ邮箱发送邮件的步骤: 1. 在QQ邮箱中开启SMTP服务,并生成授权码。 2. 在pom.xml中添加依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 3. 在application.properties中配置邮箱信息: ```properties spring.mail.host=smtp.qq.com spring.mail.port=587 spring.mail.username=你的QQ邮箱 spring.mail.password=你的授权码 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 4. 创建一个邮件服务类: ```java @Service public class MailService { @Autowired private JavaMailSender mailSender; public void sendMail(String to, String subject, String content) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("你的QQ邮箱"); message.setTo(to); message.setSubject(subject); message.setText(content); mailSender.send(message); } } ``` 5. 在需要发送邮件的地方调用MailService的sendMail方法即可。 ```java @Autowired private MailService mailService; mailService.sendMail("收件人邮箱", "邮件主题", "邮件内容"); ``` 注意事项: 1. 需要在QQ邮箱中开启SMTP服务,并生成授权码。 2. 如果使用SSL,需要将port改为465,并配置spring.mail.properties.mail.smtp.ssl.enable=true。 3. 邮箱的用户名和密码需要进行加密处理,可以使用spring-boot-starter-security依赖来加密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值