springboot 发送QQ邮件和附件

springboot 发送QQ邮件和附件
1.
首先需要登录自己的QQ邮箱申请授权码
springboot 发送QQ邮件和附件
然后再该页面往下 开启第一个POP3/SMTP,这里需要发送相关信息到指定号码。
springboot 发送QQ邮件和附件
生成的授权码,复制保留,之后需要加载代码中
2.
在pom文件中添加依赖

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

yml文件中相应配置

server:
  port: 8080

spring:
  # ========================== ↓↓↓↓↓↓ 发送邮件配置(QQ邮箱) ↓↓↓↓↓↓ ==========================
  mail:
    host: smtp.qq.com
    username: xxx@qq.com # 自己的QQ邮箱账号
    password: xxxxxxxxxx # TODO 注:这里填写 在邮箱 设置 -> 账号 里面生成的`授权码` !!!
    default-encoding: UTF-8
    form: xxx@qq.com     # 自己的QQ邮箱账号(邮件发送人地址)
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

springboot 相关代码 代码中的StringUtil就是上面pom文件中添加的第二个依赖 并不是其他的工具类

邮箱工具类

package com.example.util;

import java.io.File;

import javax.annotation.PostConstruct;
import javax.mail.internet.MimeMessage;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import lombok.SneakyThrows;

@Component
public class EmailUtil {
	
	private static JavaMailSender javaMailSender;

    private static String formEmail;

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

    @Autowired
    private JavaMailSender javaMailSender2;
    
    /**
     * @PostConstruct该注解被用来修饰一个非静态的void()方法。
             *   被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
     * Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
     */
    @PostConstruct
    public void beforeInit() {
        javaMailSender = javaMailSender2;
        formEmail = formEmail2;
    }

    /**
     * 发送邮件 - 不带附件
     *
     * @param title:邮件标题
     * @param content:
     *            邮件内容
     * @param sendTo:
     *            收件人
     * @return: void
     */
    @SneakyThrows(Exception.class)
    public static void sendMail(String title, String content, String... sendTo) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        // 发送人邮件地址
        helper.setFrom(formEmail);
        // 接收人邮件地址
        helper.setTo(sendTo);
        // 主题
        helper.setSubject(title);

        // html内容 (设置true标识发送html邮件)
        helper.setText(content, true);

        javaMailSender.send(message);
    }

    /**
     * 发送邮件 - 带附件
     *
     * @param title:邮件标题
     * @param content:
     *            邮件内容
     * @param attachmentFilename:附件文件名
     * @param file:附件
     * @param sendTo:
     *            收件人
     * @return: void
     */
    @SneakyThrows(Exception.class)
    public static void sendMail(String title, String content, String attachmentFilename, File file, String... sendTo) {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        // 发送人邮件地址
        helper.setFrom(formEmail);
        // 接收人邮件地址
        helper.setTo(sendTo);
        // 主题
        helper.setSubject(title);

        // ① html内容 (设置true标识发送html邮件)
        helper.setText(content, true);

        // ② 附件
        if (StringUtils.isNotBlank(attachmentFilename)) {
            helper.addAttachment(attachmentFilename, file);
        }

        javaMailSender.send(message);
    }

}

测试

package com.example.test;

import java.io.File;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.util.EmailUtil;

@RestController
public class TestController {
	
	@RequestMapping("/api/test")
    public String sendEmailTest() {
        EmailUtil.sendMail("测试发送普通邮件", "尊敬的小可爱,五一假期放五天假哦!", "你想发送到的账号@qq.com");
        //需在指定路径创建test.docx文件 然后以附件的形式发送
        File file = new File("E:\\QQEMail\\User\\test.docx");
        EmailUtil.sendMail("测试发送带附件邮件", "尊敬的小可爱", "test.docx", file, "你想发送到的账号@qq.com");
        return "SUCCESS ~";
    }
}

最后在浏览器中测试就可以了
原文地址https://zhengqing.blog.csdn.net/article/details/108677812

上一篇:JZ43 左旋转字符串


下一篇:leetcode-101. 对称二叉树