前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot发送邮件

SpringBoot发送邮件

原创
作者头像
zhaozhen
发布2023-02-19 13:51:08
6640
发布2023-02-19 13:51:08
举报
文章被收录于专栏:微瞰Java后端开发

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情

在实际工作中已经遇到数次需要发邮件的场景了,因此把这个操作分享给大家

1发送的邮箱设置

需要开启POP3/SMTP服务,并获取一个验证码,具体教程参见baidu

引入组件,设置邮箱信息

pom引入

代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.11</version>
</dependency>

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

需要特别多注意的是,文章正文内容使用html文本编写,因此如果需要动态替换文本内容,就需要引入模板引起来进行操作,因此我引入的是freemarker来进行模板替换

application.properties中设置对应的发送邮箱的信息

代码语言:txt
复制
spring.mail.host=smtp.qq.com
spring.mail.username=xxxx@qq.com
spring.mail.password=xxxx

实际操作代码

代码语言:txt
复制
public void  sendEmail(){
    // 获取MimeMessage对象
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper messageHelper;
    try {
        messageHelper = new MimeMessageHelper(message, true, "utf-8");
        // 发件人
        messageHelper.setFrom("xxxxx@qq.com");
        // 收件人
        messageHelper.setTo("xxxx@qq.com");
        // 邮件主题
        message.setSubject("测试邮件发送功能");
        // 邮件内容
        messageHelper.setText(getNoticeHtmlByTemplate(1,"test.vtl"), true);
        
        messageHelper.addAttachment(MimeUtility.encodeWord("drools.pdf","utf-8","B"),new File("/Users/zhaozhen/Desktop/office/规则引擎drools讲义.pdf"));
        // 发件
        mailSender.send(message);
        // 更新发件状态

        log.info("发送理赔通知邮件任务已结束");
    } catch (Exception e) {
        e.printStackTrace();
    }
}


private String getNoticeHtmlByTemplate(int applyCnt,String temp) {

    // 创建数据模型
    Map<String, Object> map = new HashMap(16);
    map.put("name", "赵镇");
    // 写数据
    TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("templates/", TemplateConfig.ResourceMode.CLASSPATH));
    Template template = engine.getTemplate(temp);
    return template.render(map);
}

对应的在resources下templates邮件正文内容test.vtl下的邮件正文内容为

代码语言:txt
复制
<html>
  <head></head>
  <br>
  <div>尊敬的${name},你好</div>
  <br>
  <body>
      <div>以下是内容部分</div>
  </body>
  <br>
</html>

另外就是附件的功能,主要由如下代码完成,及读取文件,设置发送附件时的文件名称

代码语言:txt
复制
        messageHelper.addAttachment(MimeUtility.encodeWord("drools.pdf","utf-8","B"),new File("/Users/zhaozhen/Desktop/office/规则引擎drools讲义.pdf"));

实际效果

image.png
image.png

是不是很酷,简单几步操作就可以实现邮件发送的全套功能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1发送的邮箱设置
  • 引入组件,设置邮箱信息
  • 实际操作代码
相关产品与服务
邮件推送
邮件推送(Simple Email Service,SES)是一款基于腾讯云端的平台化服务, 为企业提供安全稳定、简单快速、精准高效的营销、通知和事务邮件的推送服务。产品提供灵活的 IP 部署、电子邮件身份验证以及企业专属定制的启动计划,以保护发件人声誉,同时提供精准智能的数据分析。产品的服务范围覆盖200+国家/地区,可即时触达全球各地的邮箱地址。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档