使用spring boot实现发送邮件功能

使用spring boot实现发送邮件功能

一、引入依赖以及基本配置

首先,在pom.xml文件中引入spring boot提供的mail依赖。

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

接着,在application.yml中进行设置(在配置中注意缩进格式)

spring:
  mail:
    host: smtp.qq.com
    username: 你的qq邮箱
    password: qq邮箱的授权码

这里使用qq邮箱来进行测试,其中,username中填写自己的qq邮箱号,password填写qq邮箱的授权码。注意:授权码不是qq邮箱的密码,需要在打开自己的qq邮箱,找到“设置”里的“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 ”,接着开启“POP3/SMTP服务 ”,得到相应的授权码。

QQ邮箱SMTP服务

二、编写发送邮件的程序和对应的测试类

邮件发送类MailService

package com.silver.springboot.service;

import lombok.extern.slf4j.Slf4j;
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;

/**
 * 测试邮件发送功能
 */
@Slf4j
@Service
public class SendMail {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private JavaMailSender javaMailSender;

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

    /**
     * 发送纯文本邮件
     * @param to            邮件接收方
     * @param subject       邮件主题
     * @param text          邮件内容
     */
    public void sendTextMail(String to,String subject,String text){
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(from);
        simpleMailMessage.setTo(to);
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(text);

        try{
            javaMailSender.send(simpleMailMessage);
            logger.info("邮件已发送。");
        }catch (Exception e){
            logger.error("邮件发送失败。" + e.getMessage());
        }
    }

    /**
     * 发送带附件的邮件
     * @param to            邮件接收方
     * @param subject       邮件主题
     * @param text          邮件内容
     * @param path          附件所在的文件路径
     */
    public void sendAttachmentMail(String to,String subject,String text,String path){
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        try{
            // 创建一个multipart格式的message
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
            messageHelper.setFrom(from);
            messageHelper.setTo(to);
            messageHelper.setSubject(subject);
            messageHelper.setText(text,true);
            // 添加附件信息
            FileSystemResource file = new FileSystemResource(new File(path));
            String fileName = path.substring(path.lastIndexOf(File.separator));
            messageHelper.addAttachment(fileName,file);
            // 发送带附件的邮件
            javaMailSender.send(mimeMessage);
            logger.info("邮件发送成功");
        }catch (Exception e){
            logger.error("带有附件的邮件发送失败。" + e.getMessage());
        }
    }
}

测试类

package com.silver.springboot.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
public class SendMailTest {
    @Autowired
    private SendMail mailService;
    private String toEmail = "xxx@qq.com";		// 填写你的qq邮箱号

    @Test
    public void sendTextMail() {
        mailService.sendTextMail(toEmail,"主题","测试内容");
    }
    
    @Test
    public void sendAttachmentMail() {
        mailService.sendAttachmentMail(toEmail,"这是带附件的邮件","有附件","D:\\笔记整理\\使用spring boot实现发送邮件功能.md");
    }
}

运行测试类,可以在自己的qq邮箱收到相应的邮件。

参考:
https://blog.csdn.net/yshuailong/article/details/83378868

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值