1. 程式人生 > >Java發送郵件——SpringBoot集成Java Mail

Java發送郵件——SpringBoot集成Java Mail

inter -s start smtp prot string web get message

用途:此文僅供,自己今後的小程序通過郵件,批量通知用戶。

簡單記錄了一些發送基本郵件的操作。


項目(SpringBoot版本為2.1.2.RELEASE):

核心依賴(其他相關依賴,在其使用的地方具體說明):

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

application.yml——郵件發送相關配置:

spring:
  mail
: host: smtp.qq.com username: ***@qq.com password: *** #qq郵箱開啟POP3/SMTP服務後,生成的授權碼 receiver: ***@qq.com protocol: smtp default-encoding: utf-8

郵件實體類(使用Lombok的註解簡化實體構造):

import lombok.Data;
import org.springframework.core.io.FileSystemResource;

@Data
public class MailBean {
    
private String subject; private String text; private FileSystemResource file; private String attachmentFilename; private String contentId; }

簡單封裝郵件發送的工具類:

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.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; @Component public class MailUtil { private final JavaMailSender mailSender; @Value("${spring.mail.username}") private String sender; @Value("${spring.mail.receiver}") private String receiver; @Autowired public MailUtil(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMailSimple() { SimpleMailMessage mimeMessage = new SimpleMailMessage(); mimeMessage.setFrom(sender); mimeMessage.setTo(receiver); mimeMessage.setSubject("主題"); mimeMessage.setText("正文"); mailSender.send(mimeMessage); } private void sendMail(MailBean mailBean, boolean html, boolean multipart) { MimeMessage mimeMessage = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, multipart); helper.setFrom(sender); helper.setTo(receiver); helper.setSubject(mailBean.getSubject()); helper.setText(mailBean.getText(), html); if (multipart) { helper.addAttachment(mailBean.getAttachmentFilename(), mailBean.getFile()); } } catch (MessagingException e) { e.printStackTrace(); } mailSender.send(mimeMessage); } public void sendMailText(MailBean mailBean) { sendMail(mailBean, false, false); } public void sendMailHtml(MailBean mailBean) { sendMail(mailBean, true, false); } public void sendMailAttachment(MailBean mailBean) { sendMail(mailBean, true, true); } public void sendMailInline(MailBean mailBean) { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage); try { helper.setFrom(sender); helper.setTo(receiver); helper.setSubject(mailBean.getSubject()); helper.setText(mailBean.getText(), true); helper.addInline(mailBean.getContentId(), mailBean.getFile()); } catch (MessagingException e) { e.printStackTrace(); } mailSender.send(mimeMessage); } }

單元測試就不寫了,忘記了。發送測試:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;

import java.io.File;
import java.io.IOException;

@RestController
public class MailController {
    private final MailUtil mailUtil;
    private final TemplateEngine templateEngine;

    @Autowired
    public MailController(MailUtil mailUtil, TemplateEngine templateEngine) {
        this.mailUtil = mailUtil;
        this.templateEngine = templateEngine;
    }

    @GetMapping("/simple")
    public void simple() {
        MailBean mailBean = new MailBean();
        mailBean.setSubject("簡單純文本郵件測試");
        mailBean.setText("內容");
        mailUtil.sendMailText(mailBean);
//        mailUtil.sendMailSimple();
    }

    @GetMapping("/html")
    public void html() {
        MailBean mailBean = new MailBean();
        mailBean.setSubject("簡單html代碼,郵件測試");
        mailBean.setText("<h1>表達個意思</h1>");
        mailUtil.sendMailHtml(mailBean);
    }
    
    @GetMapping("/attachment")
    public void attachment() {
        String path = "classpath:反.jpg";
        try {
            File file = ResourceUtils.getFile(path);
            FileSystemResource fileSystemResource = new FileSystemResource(file);

            MailBean mailBean = new MailBean();
            mailBean.setSubject("主題");
            mailBean.setText("內容");
            mailBean.setAttachmentFilename(file.getName());
            mailBean.setFile(fileSystemResource);
            mailUtil.sendMailAttachment(mailBean);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java發送郵件——SpringBoot集成Java Mail