Flyinsky's Codes
350 字
2 分钟
SpringBoot集成邮件发送功能

SpringBoot集成邮件发送功能#

​ SpringFramework也是有mail的starter供springboot集成的,依赖如下:

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

​ 我们可以直接在springboot的配置文件中填写关于邮件的参数,以outlook为例:

spring:
	  mail:
    # 配置 SMTP 服务器地址
    host: smtp.office365.com
    # 发送者邮箱
    username:
    password: 
    # 端口号465或587
    port: 587
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8
    properties:
      from: 

​ 接下来我们可以直接封装一个邮件发送的工具类,在需要的业务实现类中直接调用:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

/**
 * @author Flyinsky
 * @email w2084151024@gmail.com
 * @date 2024/9/3 14:56
 */

@Component
public class MyMailSender {
    @Resource
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

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

    /**
     * 发送邮件的方法
     *
     * @param to 接收者邮箱地址
     * @param subject 邮件主题
     * @param text 邮件内容
     * @return 发送结果
     */
    public String sendSimpleMessage(String to, String subject, String text) {
        Properties properties = mailSender.getJavaMailProperties();
        properties.put("mail.smtp.starttls.enable", "true");
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(fromEmail, "谈天说地");
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(text, true); // 第二个参数true表示支持HTML格式的邮件
            mailSender.send(message);
            return "邮件发送成功";
        } catch (UnsupportedEncodingException | MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}
public class UserServiceImpl implements UserService {
    @Resource
    MyMailSender myMailSender;
  @Override
    public String sendAuthCode(String email, String sessionId) {
        Random random = new Random();
        int code = random.nextInt(899999) + 100000;
        myMailSender.sendSimpleMessage(email, "您的验证码", "您的身份验证码为:" + code + ",有效期为三分钟。");
        return null;
    }
}