SpringBoot学习篇12[发送简单邮件、发送附件、发送内联资源]

本文介绍了如何使用SpringBoot发送邮件,包括开启第三方登录邮箱、引入javamail依赖、配置MailSender、发送简单邮件、发送附件和内联资源的详细步骤,以qq邮箱为例,通过MimeMessageHelper构造邮件内容并发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Spring框架提供了一种使用JavaMailSender接口发送电子邮件的简单抽象方法,而Spring Boot为其提供了自动配置以及启动程序模块。

1.准备工作

1.1 开启第三方登录邮箱

以qq邮箱为例:

进入邮箱设置----------帐户页面,并打开以下全部服务
在这里插入图片描述

1.2 引入依赖

在pom.xml文件中添加依赖:

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

也可在新建项目时直接勾选以下依赖:
在这里插入图片描述

2.配置MailSender

我们需要作出以下必要配置,否则无法发送邮件:

  • 配置邮箱用户名:
    填写自己的邮箱账号
  • 配置邮箱密码
    填写授权码(此授权码有效期直至你下次修改密码)
    在这里插入图片描述
  • 配置邮箱服务器
    qq邮箱是smtp.qq.com
  • 使能ssl连接

此外,还需要设置超时参数,因为某些默认超时值是无限的,可能需要更改此值,以避免线程被无响应的邮件服务器阻塞。
配置如下:

spring:
  mail:
    username: xxxx@qq.com
    password: xxxxx
    host: smtp.qq.com
    properties:
      smtp.ssl.enable: true
      mail.smtp.connectiontimeout: 5000
      mail.smtp.timeout: 3000
      mail.smtp.writetimeout: 5000

3.发送简单邮件

发送简单邮件使用SimpleMailMessage构造邮件内容,使用JavaMailSender进行发送。代码如下:

    @Autowired
    JavaMailSenderImpl javaMailSender;
    @Test
    void testSimpleMail() {
        //封装简单邮件内容
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("这是邮件主题");
        message.setText("这是邮件内容");

        //发件人
        message.setFrom("xxxxx@qq.com");
        //收件人
        message.setTo("xxxx@163.com");
        javaMailSender.send(message);
    }

成功收到邮件:
在这里插入图片描述

4.发送附件

发送附件使用的是MimeMessageHelper对象构造邮件,代码如下:

@Test
    void testMimeMail() {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = null;

        try {
            mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setSubject("这是带附件的邮件主题");
            mimeMessageHelper.setText("这是邮件内容");

            //发送附件
            mimeMessageHelper.addAttachment("12月员工加班就餐补助.xls", new File("/Users/yky/Documents/12月公司员工加班就餐补助.xls"));

            //发件人
            mimeMessageHelper.setFrom("xxxxxx@qq.com");
            //收件人
            mimeMessageHelper.setTo("xxxxxx@163.com");
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

效果:
在这里插入图片描述

5.发送内联资源

发送内联资源同样是使用MimeMessageHelper对象来构造邮件,代码如下:

@Test
    void testMimeMailSendInlinePic() {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = null;

        try {
            //true标志代表发送富文本信息或带附件的信息
            mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
            mimeMessageHelper.setSubject("这是邮件主题");


            //true标志代表发送HTML内容
            mimeMessageHelper.setText("<html><body><img src='cid:identifier1234'></body></html>", true);

            //拿到资源文件并绑定cid
            FileSystemResource res = new FileSystemResource(new File("/Users/yky/Downloads/cat.jpg"));
            mimeMessageHelper.addInline("identifier1234", res);

            //发件人
            mimeMessageHelper.setFrom("xxxxxxx@qq.com");
            //收件人
            mimeMessageHelper.setTo("xxxxx@163.com");
            javaMailSender.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

效果:
在这里插入图片描述
关于邮件的讲解就到这了,欢迎大家在评论区进行讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值