Bootstrap

spring boot邮件发送整合

  • 邮件发送的基本过程与概念

    • 邮件服务器:类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中
    • 电子邮箱:用户在邮件服务器上申请的一个账户
      • from:发件人邮箱
      • to:收件人邮箱
      • subject:主题
      • body:内容体
  • 邮件传输协议

    • SMTP协议:全称Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP服务器之间的通信规则
    • POP3协议:全称为Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则
    • IMAP协议:全称为Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
  • 项目中添加依赖

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

    spring:
      # 邮箱服务配置
      mail:
        host: smtp.163.com
        username: [email protected]
        password: 授权码
        from: [email protected]
        default-encoding: utf-8
        protocol: smtps
        properties.mail.smtp.starttls.enable: true
        properties.mail.smtp.starttls.required: true
        properties.mail.smtp.ssl.enable: true
    
  • 微服务service封装

    package com.gen.service.impl;
    
    import com.gen.service.MailService;
    import lombok.extern.slf4j.Slf4j;
    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;
    
    /**
     * 邮件发送服务
     */
    @Service
    @Slf4j
    public class MailServiceImpl implements MailService {
    
        @Autowired
        private JavaMailSender mailSender;
    
        @Value("${spring.mail.from}")
        private String from;
    
        /**
         * 发送简单邮件
         *
         * @param to      收信人
         * @param subject 主题
         * @param content 正文
         */
        @Override
        public void sendSimpleMail(String to, String subject, String content) {
            // 创建SimpleMailMessage对象
            SimpleMailMessage message = new SimpleMailMessage();
    
            // 邮件发送人
            message.setFrom(from);
            // 邮件接收人
            message.setTo(to);
            // 邮件主题
            message.setSubject(subject);
            // 邮件内容
            message.setText(content);
    
            // 发送邮件
            this.mailSender.send(message);
            log.info("邮件发送成功===》{}",message);
        }
    }
    
;