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

SpringBoot发送邮件

作者头像
十玖八柒
发布2022-08-01 09:23:08
3360
发布2022-08-01 09:23:08
举报
文章被收录于专栏:ahzoo.cn的博客分享

引入依赖

代码语言:javascript
复制
<!--   父配置-->    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.3</version>
        <relativePath/>
    </parent>
    
    ......
    
<!--        springboot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--        邮件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

配置文件:

代码语言:javascript
复制
spring:
  mail:
    # 配置 SMTP 服务器地址
    host: smtp.qq.com
    # 发送者邮箱
    username: ooahz@qq.com
    # 邮箱密码(即邮件授权码)
    password: axxxxxxxxz
    # 邮箱端口号(QQ邮箱为465或587)
    port: 587
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8
    # 配置SSL 加密工厂
    properties:
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
        # 开启Debug
        debug: true

启动类:

代码语言:javascript
复制
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;


@EnableScheduling
@SpringBootApplication
public class Application {

    public static void main(String[] args){
            SpringApplication.run(Application.class, args);
    }
}

携带文字发送

接口类:

代码语言:javascript
复制
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * @author ahzoo
 * @create 2022/2/11
 * @desc 邮件发送
 */
@RestController
public class email {

    @Autowired
    JavaMailSender javaMailSender;

    /**
     * 发送简单邮件
     * @return success
     */
    @PostMapping("/send")
    public String sendEmail() {
        // 构建邮件发送对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("这是一封测试邮件");
        // 设置邮件发送者,与配置文件中的邮箱保持一致
        message.setFrom("ooahz@qq.com");
        // 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
        // message.setTo("123@qq.com","999qq.com");
        message.setTo("ooahz@qq.com");
        // 设置邮件抄送人,可以有多个抄送人
//        message.setCc("999@163.com");
//        // 设置隐秘抄送人,可以有多个
//        message.setBcc("999@outlook.com");
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText("这是一封测试邮件————from Ahzoo");
        // 发送邮件
        javaMailSender.send(message);
        return "发送成功";
    }

}

因为开启了debug功能,所以邮件发送结果会在控制台打印:

图片
图片

测试发送:

图片
图片
图片
图片

携带附件发送

代码语言:javascript
复制

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

/**
 * @author ahzoo
 * @create 2022/2/11
 * @desc 邮件发送
 */
@RestController
public class email {

    @Autowired
    JavaMailSender javaMailSender;

   /**
     * 携带附件发送
     *
     * @return result
     */
    @PostMapping("/sendAttachment")
    public String sendFile() {
        // 使用MimeMessage对象发送复杂邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // 使用MimeMessageHelper对邮件进行配置,true表示构建一个可以带附件的邮件对象
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject("测试附件");
            helper.setFrom("ooahz@qq.com");
            helper.setTo("ooahz@qq.com");
//        helper.setCc("999@163.com");
//        helper.setBcc("999@outlook.com");
            helper.setSentDate(new Date());
            helper.setText("这是一封测试邮件————from Ahzoo");
            File path = new File(ResourceUtils.getURL("classpath:").getPath());
            // 第一个参数是自定义的名称,后缀需要加上,第二个参数是文件的位置
            helper.addAttachment("文件.txt", new File(path + "/static/z.txt"));
            javaMailSender.send(mimeMessage);
            return "发送成功";
        } catch (Exception e) {
            e.printStackTrace();
            return "发送失败" + e.getMessage();
        }
    }

}
图片
图片

携带静态资源发送

代码语言:javascript
复制

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

/**
 * @author ahzoo
 * @create 2022/2/11
 * @desc 邮件发送
 */
@RestController
public class email {

    @Autowired
    JavaMailSender javaMailSender;

  /**
     * 携带静态资源发送
     *
     * @return
     */
    @PostMapping("sendResource")
    public String sendImg() {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject("测试静态资源");
            helper.setFrom("ooahz@qq.com");
            helper.setTo("ooahz@qq.com");
//        helper.setCc("999@163.com");
//        helper.setBcc("999@outlook.com");
            helper.setSentDate(new Date());
            // 设置邮件正文内容。cid为占位符,对应下面的contentId。true表示正文为Html
            helper.setText("<p>图片1:</p><img src='cid:image1'/><p>图片2:</p><img src='cid:image1'/>", true);
            // contentId:对应上面占位符中的cid。file:静态资源路径

            File path = new File(ResourceUtils.getURL("classpath:").getPath());
            helper.addInline("image1", new File(path + "/static/1.png"));
            helper.addInline("image2", new File(path + "/static/ahzoo.jpg"));
            javaMailSender.send(mimeMessage);
            return "发送成功";
        } catch (Exception e) {
            e.printStackTrace();
            return "发送失败" + e.getMessage();
        }
    }

}
图片
图片

使用模板发送

常见的模板引擎主要有:ThymeleafFreemaker,这里不做演示 ​

后记

项目结构:

图片
图片

项目源码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引入依赖
  • 携带文字发送
  • 携带附件发送
  • 携带静态资源发送
  • 使用模板发送
  • 后记
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档