springboot实现email多文件 多人批量发送

1、导入包

<!-- email 开始 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- email 结束 -->

2、yml配置application-staticonf.yml

spring:
  mail:
    host: smtp.qq.com #邮件服务器
    username: 237438@qq.com #发送邮件邮箱地址
    password: wzvqfidbecaj #客户端授权码,不是邮箱密码,这个在qq邮箱设置里面自动生成的
    port: 587 #端口号465-smtps或587-smtp
    from: 237438@qq.com # 发送邮件的地址,和上面username一致
    default-encoding: UTF-8
    protocol: smtp

3、定义接口规范

package com.cn.config.utils.email;

public interface EmailService {

    /**
     * 发送文本邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    void sendSimpleMail(String[] to, String subject, String content);

    /**
     * 发送HTML邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    void sendHtmlMail(String[] to, String subject, String content);

    /**
     * 发送带附件的邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     * @param filePath 附件
     */
    public void sendAttachmentsMail(String[] to, String subject, String content, String[] filePath);
}

4、接口实现

package com.cn.config.utils.email;

import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;

/**
 * 发送邮件服务
 */
@Service
@Slf4j
public class EmailServiceImpl implements EmailService {

    @Resource
    private JavaMailSender javaMailSender;

    //注入配置文件中配置的信息——>from
    @Value("${spring.mail.from}")
    private  String from;

    @Override
    public void sendSimpleMail(String[] to, String subject, String content) {

        SimpleMailMessage message = new SimpleMailMessage();
        //发件人
        message.setFrom(from);
        //收件人
        message.setTo(to);
        //邮件主题
        message.setSubject(subject);
        //邮件内容
        message.setText(content);
        //发送邮件
        javaMailSender.send(message);

    }

    @Override
    public void sendHtmlMail(String[] to, String subject, String content) {

        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(message,true);
            messageHelper.setFrom(from);
            messageHelper.setTo(to);
            message.setSubject(subject);
            messageHelper.setText(content,true);
            javaMailSender.send(message);
            log.info("邮件已经发送!");
        } catch (MessagingException e) {
            log.error("发送邮件时发生异常:"+e);
        }

    }

    /**
     * 带附件发送邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     * @param filePath 附件
     */
    @Override
    public void sendAttachmentsMail(String[] to, String subject, String content, String[] filePath) {

        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(message,true);
            messageHelper.setFrom(from);
            messageHelper.setTo(to);
            messageHelper.setSubject(subject);
            messageHelper.setText(content,true);
            //携带附件
            for (String s : filePath) {
                if (null!=s && !"".equals(s.trim())){
                    FileSystemResource file = new FileSystemResource(s);
                    /* String fileName = filePath.substring(filePath.lastIndexOf(File.separator));*/
                    String fileName = s.substring(s.lastIndexOf("/")+1);
                    messageHelper.addAttachment(MimeUtility.encodeWord(fileName,"utf-8","B"),file);
                }
            }


            javaMailSender.send(message);
            log.info("邮件加附件发送成功!");
        } catch (MessagingException | UnsupportedEncodingException e) {
            log.error("发送失败:"+e);
        }

    }
}

5、测试发送

package com.cn.test;

import com.cn.config.utils.email.EmailService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
public class EmailTest {
    private String[] to =new String[]{"958252871@qq.com","zhaoqei@sna.com"};
    private String[] files = new String[]{"D:/TEST/明星版的图片testMP4.jpg","D:/TEST/QQ截图20211215172002.png"};
    @Autowired
    private EmailService emailService;

    @Test
    public void sendSimpleEmail(){
        String content = "你好,恭喜你...";
        emailService.sendSimpleMail(to,"祝福邮件",content);
    }

    @Test
    public void sendMimeEmail(){
        String content = "<a href='http://www.flycme.top'>你好,欢迎注册网站,请点击链接激活</a>";
        emailService.sendHtmlMail(to,"激活邮件",content);
    }

    @Test
    public void sendAttachment(){
        emailService.sendAttachmentsMail(to,"发送附件","这是Java体系图",files);
    }

}

6、测试结果
在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值