Spring Boot 发送邮件

一、邮箱设置

Springboot想要使用邮箱服务发送邮件需修改邮箱配置,以QQ邮箱为例

登录QQ邮箱,点击开启SMTP服务,如下图所示
请添加图片描述
这里会生成一个授权码,复制出来,配置文件里要用

二、项目代码

引入maven依赖

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

application.properties 配置中添加如下内容,usernamepassword 要改成自己的

# 邮箱服务器地址
spring.mail.host=smtp.qq.com
# 发送方的邮箱
spring.mail.username=123456@qq.com
# 发送方的授权码,邮箱设置里面生成的授权码,这个不是真实的密码
spring.mail.password=mecjeueyzejqzuaf
spring.mail.port=465
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true
# 是否用启用加密传送的协议验证项
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
# 邮件编码
spring.mail.default-encoding=UTF-8

定义邮件服务接口

package com.rkyao.spring.boot.email.service;

/**
 * 邮件服务接口
 */
public interface MailService {

    /**
     * 发送普通纯文本邮件
     *
     * @param to 收件人地址
     * @param subject 邮件主题
     * @param text 邮件内容
     */
    void sendSimpleMail(String to, String subject, String text);

}

邮件服务接口实现类

package com.rkyao.spring.boot.email.service.impl;

import com.rkyao.spring.boot.email.service.MailService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

/**
 * 邮件发送服务
 */
@Service
public class MailServiceImpl implements MailService {

    private Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);

    @Autowired
    private JavaMailSender mailSender;

    @Value("${spring.mail.username}")
    private String senderMail;

    @Override
    public void sendSimpleMail(String to, String subject, String text) {
        Assert.hasText(to, "收件人邮箱不能为空");
        Assert.hasText(subject, "邮件主题不能为空");
        Assert.hasText(text, "邮件内容不能为空");

        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(senderMail);   //邮件发送人
        message.setTo(to);  //邮件接收人
        message.setSubject(subject);   //邮件主题
        message.setText(text);   //邮件内容
        mailSender.send(message);
        logger.info("The mail has been sent, to: {}, subject: {}, text: {}", to, subject, text);
    }

}

写一个controller方法

package com.rkyao.spring.boot.email.controller;

import com.rkyao.spring.boot.email.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 邮件发送
 */
@RestController
@RequestMapping("/mail")
public class MailController {

    @Autowired
    private MailService mailService;

    /**
     * 发送邮件
     * localhost:8080/mail/send?to=abc@qq.com&subject=这是邮件主题&text=这是邮件内容
     *
     * @param to 收件人邮箱
     * @param subject 邮件主题
     * @param text 邮件内容
     */
    @RequestMapping("/send")
    public void send(String to, String subject, String text) {
        mailService.sendSimpleMail(to, subject, text);
    }

}

调用这个controller方法测试一下,收件邮箱改成实际地址,目标邮箱成功收到邮件,验证成功

localhost:8080/mail/send?to=abc@qq.com&subject=这是邮件主题&text=这是邮件内容
三、GitHub源码地址

https://github.com/yaorongke/spring-boot-demos/tree/main/spring-boot-email

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值