使用Spring Boot 发送各种格式邮件

文章目录

  • 介绍
  • 邮箱配置
  • 文本邮件
  • html格式邮件
  • 添加附件/嵌入图片
    • 添加附件
    • 嵌入图片

介绍

Spring内置了JavaMailSender,引用即可,Spring-boot-starter-mail
本文采用的当前最新版本 spring-boot 2.2.5

邮箱配置

spring:
  mail:
    host: smtp.163.com # 邮件服务器地址
    username: aeg******yen@163.com
    password: WYPI********DBM # 客户端授权码
    default-encoding: utf-8
    protocol: smtp

文本邮件


	@Resource
    JavaMailSender mailSender;

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

    /**
     * 发送邮件通知
     * @param target 接收者
     * @param subject 主题
     * @param content 内容
     */
    @PostMapping("/mail")
    public void sendSimpleMail(String target, String subject, String content) {
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setFrom(from);
        msg.setTo(target);
        msg.setSubject(subject);
        msg.setText(content);

        try {
            mailSender.send(msg);
            log.info(String.format("发送邮件给%s成功!", target));
        } catch (Exception e) {
            log.error(String.format("发送邮件给%s异常!",target), e);
        }
    }

html格式邮件

将html以string的形式传递进去就行了,既然是Mime类型,肯定还支持很多操作,很多玩法,可以多看看这几个类的api。

public void sendHTMLMail(String target, String subject, String content) {
        MimeMessage msg = mailSender.createMimeMessage();

        try {
            MimeMessageHelper helper = new MimeMessageHelper(msg, true);
            helper.setFrom(from);
            helper.setTo(target);
            helper.setSubject(subject);
            helper.setText(content, true);
            
            mailSender.send(msg);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

添加附件/嵌入图片

添加附件

在上面的html格式版本的send之前添加如下即可,支持nio。
如果要添加多个文件,可以addAttachment多次,也可以使用nio加入多个路径:
static Path get(String first, String… more)

FileSystemResource resource = new FileSystemResource(Paths.get("/filepath"));
helper.addAttachment("filename",resource);

嵌入图片

同添加附件,只是需要使用如下方法添加图片。

helper.addInline(contentId,resource);

你可能感兴趣的:(使用Spring Boot 发送各种格式邮件)