spring boot 发送邮件

简单几步,实现在spring boot中发送邮件: 1、引入依赖:

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

2、application.yml中配置邮件相关的参数:

spring:     mail:       host: smtp.exmail.qq.com       username: 用户名       password: 密码       properties:         mail:           smtp:             auth: true             starttls:               enable: true               required: true  

3、邮件service代码:

@Service  
public class MailService {  
 private final Logger logger = LoggerFactory.getLogger(this.getClass());  
 
 @Autowired  
 private JavaMailSender sender;  
 
 @Value("${spring.mail.username}")  
 private String from;  
 
 /** 
     * 发送纯文本的简单邮件 
     * @param to 
     * @param subject 
     * @param content 
     */  
 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);  
 
 try {  
            sender.send(message);  
            logger.info("简单邮件已经发送。");  
        } catch (Exception e) {  
            logger.error("发送简单邮件时发生异常!", e);  
        }  
    }  
 
 /** 
     * 发送html格式的邮件 
     * @param to 
     * @param subject 
     * @param content 
     */  
 public void sendHtmlMail(String to, String subject, String content){  
        MimeMessage message = sender.createMimeMessage();  
 
 try {  
 //true表示需要创建一个multipart message  
            MimeMessageHelper helper = new MimeMessageHelper(message, true);  
            helper.setFrom(from);  
            helper.setTo(to);  
            helper.setSubject(subject);  
            helper.setText(content, true);  
 
            sender.send(message);  
            logger.info("html邮件已经发送。");  
        } catch (MessagingException e) {  
            logger.error("发送html邮件时发生异常!", e);  
        }  
    }  
 
 /** 
     * 发送带附件的邮件 
     * @param to 
     * @param subject 
     * @param content 
     * @param filePath 
     */  
 public void sendAttachmentsMail(String to, String subject, String content, String filePath){  
        MimeMessage message = sender.createMimeMessage();  
 
 try {  
 //true表示需要创建一个multipart message  
            MimeMessageHelper helper = new MimeMessageHelper(message, true);  
            helper.setFrom(from);  
            helper.setTo(to);  
            helper.setSubject(subject);  
            helper.setText(content, true);  
 
            FileSystemResource file = new FileSystemResource(new File(filePath));  
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));  
            helper.addAttachment(fileName, file);  
 
            sender.send(message);  
            logger.info("带附件的邮件已经发送。");  
        } catch (MessagingException e) {  
            logger.error("发送带附件的邮件时发生异常!", e);  
        }  
    }  
 
 /** 
     * 发送嵌入静态资源(一般是图片)的邮件 
     * @param to 
     * @param subject 
     * @param content 邮件内容,需要包括一个静态资源的id,比如:<img src=\"cid:rscId01\" > 
     * @param rscPath 静态资源路径和文件名 
     * @param rscId 静态资源id 
     */  
 public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){  
        MimeMessage message = sender.createMimeMessage();  
 
 try {  
 //true表示需要创建一个multipart message  
            MimeMessageHelper helper = new MimeMessageHelper(message, true);  
            helper.setFrom(from);  
            helper.setTo(to);  
            helper.setSubject(subject);  
            helper.setText(content, true);  
 
            FileSystemResource res = new FileSystemResource(new File(rscPath));  
            helper.addInline(rscId, res);  
 
            sender.send(message);  
            logger.info("嵌入静态资源的邮件已经发送。");  
        } catch (MessagingException e) {  
            logger.error("发送嵌入静态资源的邮件时发生异常!", e);  
        }  
    }  
}  

4、单元测试代码:

public class MailTests extends BasicUtClass{  
 @Autowired  
 private MailService mailService;  
 
 private String to = "xujijun@mail.cn";  
 
 @Test  
 public void sendSimpleMail() {  
        mailService.sendSimpleMail(to, "主题:简单邮件", "测试邮件内容");  
    }  
 
 @Autowired  
    VelocityEngine velocityEngine;  
 
 @Test  
 public void sendHtmlMail() {  
        Map<String, Object> model = new HashMap<String, Object>();  
        model.put("time", XDateUtils.nowToString());  
        model.put("message", "这是测试的内容。。。");  
        model.put("toUserName", "张三");  
        model.put("fromUserName", "老许");  
        String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "welcome.vm", "UTF-8", model);  
 
        mailService.sendHtmlMail(to, "主题:html邮件", content);  
    }  
 
 @Test  
 public void sendAttachmentsMail() {  
        mailService.sendAttachmentsMail(to, "主题:带附件的邮件", "有附件,请查收!", "C:\\Users\\Xu\\Desktop\\csdn\\1.png");  
    }  
 
 @Test  
 public void sendInlineResourceMail() {  
        String rscId = "rscId001";  
        mailService.sendInlineResourceMail(to,  
 "主题:嵌入静态资源的邮件",  
 "<html><body>这是有嵌入静态资源:<img src=\'cid:" + rscId + "\' ></body></html>",  
 "C:\\Users\\Xu\\Desktop\\csdn\\1.png",  
                rscId);  
    }  
}  

源代码参考:https://github.com/xujijun/my-spring-boot

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Netkiller

Spring boot with Oracle

本文节选自《Netkiller Java 手札》 地址: http://www.netkiller.cn/java/index.html 9.11. Sprin...

34740
来自专栏Netkiller

Spring boot with MySQL 实例参考

节选择《Netkiller Java 手札》· Spring 框架 9.7. Spring boot with MySQL 9.7.1. Maven pom.x...

36550
来自专栏Netkiller

Spring boot with Spring security

本文节选自 《Netkiller Java 手札》 地址:http://www.netkiller.cn/java/index.html 9.15. Spri...

42450
来自专栏Netkiller

Spring Boot · Mongo Repository

本文节选自《Netkiller Java 手札》 http://www.netkiller.cn/java/ 11.12.5.1. MongoTempla...

34560
来自专栏Netkiller

Spring boot with Scheduling

本文节选自《Netkiller Java 手札》 http://www.netkiller.cn/java/spring/boot/index.html 11....

37750
来自专栏Netkiller

Spring Boot MongoDB 实例

节选自《Netkiller Java 手札》 11.12.3. Spring boot mongodb import org.springframework...

30940
来自专栏Netkiller

Spring Boot 快速开始

节选自 《Netkiller Java 手札》 11.2. Spring Boot 11.2.1. pom.xml <project xmlns="http...

36450
来自专栏闻道于事

Spring Boot入门

Spring Boot入门: 使用IDEA创建Spring Boot 项目: 选择 ? 勾选Web ? 生成项目结构: ? 例子: package com.ex...

31040
来自专栏企鹅号快讯

174.Spring Boot WebSocket:群聊-昵称

【视频&交流平台】 àSpring Boot视频 http://study.163.com/course/introduction.htm?courseId=1...

34450
来自专栏企鹅号快讯

《06.Spring Boot的数据访问:PagingAndSortingRepository使用》

示例 使用PagingAndSortingRepository接口 PagingAndSortingRepository继承自CrudRepository接口,...

340100

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励