【Spring Boot】发送邮件功能-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

发送邮件功能

一.pom.xml文件添加邮件依赖

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

二.发送邮件信息

有两种方式配置固定配置在application.yml中或者将发送邮箱配成活的参数
注意发送者必须开通了smtp服务4和5目录中介绍开通smtp服务

备注host配置
网易邮箱smtp.163.com
QQ邮箱smtp.qq.com

1固定配置在application.yml

在application.yml中配置

spring:
  mail:
    host: smtp.163.com #邮件服务器地址
    port: 465 #端口号
    username: 邮箱地址
    password: 开通smtp服务获取的授权码
    default-encoding: UTF-8 #默认编码格式
    properties:
      mail:
        debug: true #启动debug调试
        smtp:
          auth: true
          ssl:
            enable: true
          starttls:
            enable: true
            required: true

发送邮件接口

@RequiredArgsConstructor
@RestController
public class SendEmailController
{
private final JavaMailSender mailSender;
// 发送邮件接口
public void sendEmail() {
        try {
            SendMail.sendEmail(mailSender, username, dto.getContent(), dto.getFileName(), dto.getReUserMail());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }  
}

2发送邮箱配成活

不需要在application.yml中配置信息

public class SendEmailController {

    public void sendEmail() {
        // 邮箱配置
        String host = "smtp.163.com";
        Integer port = 465;
        String username = "邮箱";
        String password = "授权密码";
        String content = "发送内容";
        String fileName = "发送主题";
        String reUserMail = "收件人";
        try {
            SendMail.sendEmail(host, port, username, password, content, fileName, reUserMail);
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
}

3底层发送邮件方法

import lombok.extern.slf4j.Slf4j;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.internet.*;
import java.util.Properties;


@Slf4j
public class SendMail {

    /**
     *
     * @param host 邮件服务器地址
     * @param port 端口号
     * @param username 发送者邮箱
     * @param password 授权密码
     * @param content 内容
     * @param fileName 主题
     * @param reUserMail 收件人邮箱
     */
    public static void sendEmail(String host, int port, String username, String password, String content, String fileName, String reUserMail){
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost(host);
        mailSender.setPort(port);
        mailSender.setUsername(username);
        mailSender.setPassword(password);
        mailSender.setDefaultEncoding("utf-8");

        Properties javaMailProperties = mailSender.getJavaMailProperties();
        javaMailProperties.setProperty("mail.smtp.auth", "true");
        javaMailProperties.setProperty("mail.smtp.ssl.enable", "true");
        javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");
        javaMailProperties.setProperty("mail.smtp.starttls.required", "true");
        javaMailProperties.setProperty("mail.debug", "true");//启用调试
        javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒
        mailSender.setJavaMailProperties(javaMailProperties);
        sendEmail(mailSender, username, content, fileName, reUserMail);
    }


    /**
     * 发送邮件内容
     * @param mailSender
     * @param sender 发送人邮箱
     * @param content 发送内容
     * @param fileName 主题
     * @param reUserMail 收件人邮箱
     */
    public static void sendEmail(JavaMailSender mailSender, String sender, String content, String fileName, String reUserMail) {
        MimeMessage message = null;
        try {
            message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            /**发送者邮箱即为开通了smtp服务的邮箱*/
            helper.setFrom(sender);
            /**发送到的邮箱*/
            helper.setTo(reUserMail);
            helper.setSubject("主题" + fileName);
            helper.setText("带附件的邮件内容");
            helper.setText(content, true);
            mailSender.send(message);
        } catch (Exception e){
            e.printStackTrace();
        }
    }

}

4QQ邮箱开通smtp服务

在邮箱->设置->账号->开通POP3/SMTP服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5网易邮箱开通smtp服务

邮箱->设置->POP3/SMTP/IMAP->开通POP3/SMTP和IMAP/SMTP服务
在这里插入图片描述
在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring

“【Spring Boot】发送邮件功能-CSDN博客” 的相关文章