springboot2.x整合邮箱发送

1.
邮件传输协议
◦SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则
◦POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信 规则
◦IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
2.账号准备和配置
https://mail.126.com/
发送端使用网易邮箱
使用邮箱授权码发送 


2.pom.xml增加

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

3.application.yml增加

#邮箱配置
  mail:
    host: smtp.126.com #发送邮件服务器
    username: [email protected] #发送邮件的邮箱地址
    password: TFZPFFWFWVXQxxxxx #客户端授权码,不是邮箱密码,网易的是自己设置的
    from: [email protected]  # 发送邮件的地址,和上面username一致
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
    properties.mail.smtp.ssl.enable: true
    default-encoding: utf-8

邮箱设置

4.service封装

package net.wnn.component.impl;

import lombok.extern.slf4j.Slf4j;
import net.wnn.component.MailService;
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 {

    /**
     *  springboot 提供的一个发送邮件的简单抽象,直接注入即可
     */
    @Autowired
    private JavaMailSender mailSender;


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

    /**
     * 发送邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendMail(String to, String subject, String content) {

        //创建一个邮箱消息对象
        SimpleMailMessage message = new SimpleMailMessage();

        //配置邮箱发送人
        message.setFrom(from);

        //邮件的收件人
        message.setTo(to);

        //邮件的主题
        message.setSubject(subject);

        //邮件的内容
        message.setText(content);

        mailSender.send(message);

        log.info("邮件发送成功:{}",message.toString());

    }
}
 

 

 

package net.wnn.component;

public interface MailService {

    /**
     * 发送邮件
     * @param to
     * @param subject
     * @param content
     */
    void sendMail(String to, String subject, String content);
}
 

 

5.

@Autowired
private MailService mailService;
/**
 * 验证码的标题
 */
private static final String SUBJECT= "验证码";
/**
 * 验证码的内容
 */
private static final String CONTENT= "您的验证码是%s,有效时间是60秒!";
mailService.sendMail("to收件方地址 123455.qq.com",SUBJECT,String.format(CONTENT,code));

 

Guess you like

Origin blog.csdn.net/wnn654321/article/details/114228363