基于SpringBoot的邮件发送

基于SpringBoot的邮件发送

1.导入依赖坐标

<!--邮件任务-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>

2.配置文件application.yml

spring: 
  mail: 
    username: **********@qq.com #填写自己的qq
    password: kuhfxafzcxstfieh #填写自己的QQ邮箱授权码
    host: smtp.qq.com
    #开启加密验证
    properties:
      mail:
        smtp:
          enable: true

3.简单邮件发送

package shiro.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import shiro.demo.pojo.User;
import shiro.demo.service.UserService;

import javax.annotation.Resource;

@SpringBootTest
class ShiroDemoApplicationTests {

    
    @Autowired
    JavaMailSenderImpl mailSender;

    @Test
    void contextLoads() {
        //一个简单的邮件发送
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("测试邮件主题");//设置邮件的主题
        message.setText("测试邮件内容");   //设置邮件的正文
        message.setFrom("**********@qq.com"); //从哪里发
        message.setTo("**********@qq.com"); //发向哪里
        mailSender.send(message);
    }

}

测试结果如下
在这里插入图片描述

4.复杂邮件发送

package shiro.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@SpringBootTest
class ShiroDemoApplicationTests {

    @Autowired
    JavaMailSenderImpl mailSender;

    @Test
    void contextLoads() throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom("**********@qq.com");
        helper.setTo("**********@qq.com");
        helper.setSubject("测试邮件的主题");
        //可以支持html
        helper.setText("<h1>测试邮件的正文</h1>", true);
        //附件
        File file = new File("C:\\Users\\12523\\Desktop\\题.txt");
        helper.addAttachment("附件的名称", file);
        mailSender.send(message);
    }
}

测试结果如下
在这里插入图片描述

发送失败

邮件发送有着很多的原因,如:配置过程中的端口号/授权码错误、550 DT:SPM主题/内容不规范被当做垃圾邮件、发送过于频繁、网络原因。所以只要编译器不报错,如果收不到邮件的话可以换个时间段多试几次。

封装成方法

package shiro.demo.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import shiro.demo.service.MailService;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * 邮件发送服务实现类
 *
 * @Auther Shen
 * @Date 2020-07-09
 */
@Service
public class MailServiceImpl implements MailService {

    @Autowired
    JavaMailSenderImpl mailSender;

    //简单邮件发送
    private SimpleMailMessage setSimpleMailMessage(String subject, String text, String from, String to) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject(subject);//设置邮件的主题
        message.setText(text);   //设置邮件的正文
        message.setFrom(from); //从哪里发
        message.setTo(to); //发向哪里
        return message;
    }

    //复杂邮件发送
    private MimeMessageHelper setMimeMessage(MimeMessage message, String subject, String text, String from, String to, boolean html) throws MessagingException {
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject(subject);
        //可以支持html
        helper.setText(text, html);
        return helper;
    }

    /**
     * 一个简单的邮件发送
     *
     * @param subject
     * @param text
     * @param from
     * @param to
     */
    @Override
    public void SendMessage(String subject, String text, String from, String to) {
        SimpleMailMessage message = setSimpleMailMessage(subject, text, from, to);
        mailSender.send(message);
    }

    /**
     * 一个复杂的支持html的邮件发送
     *
     * @param subject
     * @param text
     * @param from
     * @param to
     * @param html
     * @throws MessagingException
     */
    @Override
    public void SendMessage(String subject, String text, String from, String to, boolean html) throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        setMimeMessage(mimeMessage, subject, text, from, to, html);
        mailSender.send(mimeMessage);
    }

    /**
     * 一个支持html且可以添加附件的邮件发送服务
     *
     * @param subject
     * @param text
     * @param from
     * @param to
     * @param filepath
     * @param filename
     * @param html
     * @throws MessagingException
     */
    @Override
    public void SendMessage(String subject, String text, String from, String to, String filepath, String filename, boolean html) throws MessagingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = setMimeMessage(mimeMessage, subject, text, from, to, html);
        //附件
        File file = new File(filepath);
        helper.addAttachment(filename, file);
        mailSender.send(mimeMessage);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值