使用SpringBoot实现邮件发送_springboot发送邮件-程序员宅基地

技术标签: spring boot  java  SpringBoot  ssl  

邮件发送是一个非常常见的功能,注册时的身份认证、重要通知发送等都会用到邮件发送。Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。下面就来看看Spring Boot中如何发送邮件。

发送前的准备

以QQ邮箱为例,首先要申请开通POP3/SMTP服务或者IMAP/SMTP服务。SMTP全称为Simple MailTransfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与SMTP服务器之间,以及SMTP服务器与SMTP服务器之间的通信规则。

一、登录QQ邮箱,依次点击设置和设置下的账户
在这里插入图片描述在这里插入图片描述
二、在账户下方找到POP3/SMTP服务,点击“开启”按钮
在这里插入图片描述
三、点击开启后,可以看到发送短信验证的提示,发送成功后就可以获取到授权码,将授权码保存,后面会要用到
在这里插入图片描述
在这里插入图片描述
获取到授权码后,准备工作就完成了

发送邮件

使用SpringBoot发送邮件,首先要添加邮件依赖:

		<!--添加邮件依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

然后配置application.yml文件:

spring:
  mail:
    host: smtp.qq.com #邮件服务器地址
    port: 465 #端口号
    username: QQ邮箱地址
    password: 上面获取的授权码
    default-encoding: UTF-8 #默认编码格式
    properties:
      mail:
        debug: true #启动debug调试
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory #SSL连接配置

服务器地址和端口是可以在邮件的帮助中心看到的(QQ邮箱=>帮助中心=>搜索SSL)如下:
在这里插入图片描述
接下来就可以发送邮件了,先创建一个MyMailService用来封装邮件发送:

@Component
public class MyMailService {
    
    @Autowired
    JavaMailSender javaMailSender;
    public void sendMail(String from,String to,String cc,String subject,String text){
    
        SimpleMailMessage smm = new SimpleMailMessage();
        smm.setFrom(from);//发送者
        smm.setTo(to);//收件人
        smm.setCc(cc);//抄送人
        smm.setSubject(subject);//邮件主题
        smm.setText(text);//邮件内容
        javaMailSender.send(smm);//发送邮件
    }
}
  • JavaMailSender是Spring Boot在MailSenderPropertiesConfiguration类中配置好的,该类在Mail自动配置类MailSenderAutoConfiguration中导入,因此这里注入JavaMailSender就可以使用了
  • 传递的5个参数分别表示邮件发送者、收件人、抄送人、邮件主题以及邮件内容
  • 简单邮件可以直接构建一个SimpleMailMessage对象进行配置,配置完成后,通过JavaMailSender将邮件发送出去

使用测试类给自己发邮件测试一下:

@SpringBootTest
public class MyMailServiceTest {
    
    @Autowired
    MyMailService myMailService;
    @Test
    public void sendMailTest(){
    
        myMailService.sendMail(
        "[email protected]",
        "[email protected]",
        "[email protected]",
        "SpringBoot发送邮件",
        "邮件发送成功啦!");
    }
}

执行方法后可以看到邮件发送成功了,以上代码可以写自己的邮件
在这里插入图片描述
在这里插入图片描述

发送带附件的邮件

要发送一个带附件的邮件也非常容易,通过调用Attachment方法即可添加附件,在MailService中添加如下方法:

public void sendFileMail(String from, String to, String subject, String text, File file){
    
        try {
    
            MimeMessage mm = javaMailSender.createMimeMessage();
            MimeMessageHelper mmh = new MimeMessageHelper(mm,true);
            mmh.setFrom(from);
            mmh.setTo(to);
            mmh.setSubject(subject);
            mmh.setText(text);
            mmh.addAttachment(file.getName(), file);
        }catch (Exception e){
    
            e.printStackTrace();
        }
    }

这里使用MimeMessageHelper简化了邮件配置,它的构造方法的第二个参数true表示构造一个multipart message类型的邮件。最后通过addAttachment方法添加附件

测试一下:

	@Test
    public void sendFileMailTest(){
    
        myMailService.sendFileMail("[email protected]","[email protected]","发送带附件的邮件","邮件发送成功啦!",new File("E:\\test.docx"));
    }

可以看到,邮件发送成功,附件也接收到了
在这里插入图片描述
至此,使用SpringBoot实现邮件发送就完成了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47390965/article/details/124015311

智能推荐

输入关键字生成对联_自动对联工具-程序员宅基地

文章浏览阅读3k次。鼠年春节临近,来试试新的基于 GPT2-Chinese 自动对联系统:自动写对联(输入开头进行对联自动生成)和自动对对联(输入上联自动写下联)。老的自动对联功能是去年基于深度学习机器翻译模型上线的一个自动对对联的对话模块:风云三尺剑,花鸟一床书---对联数据集和自动对联机器人。这一年来,以BERT为代表的预训练模型不断推陈出新,席卷整个自然语言处理(NLP)领域,这其中NLP的难题之一自然语言生成..._输入首字 对联

matplotlib——折线图(改变横坐标_matplotlib 横坐标单位-程序员宅基地

文章浏览阅读1.8w次,点赞7次,收藏33次。&gt;改变横坐标的刻度:#建立一个x轴(1,20),y轴随机产生的折线图fig = plt.figure(figsize=(20,8), dpi=100)x= range(1, 21)#x 轴数据y = [random.randint(1,21) for i in range(1,21)]#y 轴数据plt.plot(x, y)#将x的刻度按一个单位来表示plt.xticks(..._matplotlib 横坐标单位

物联网Coap框架 ------- Californium结构分析-程序员宅基地

文章浏览阅读555次。一.Calinfornium简介Californium 是一款基于Java实现的Coap技术框架,该项目实现了Coap协议的各种请求响应定义,支持CON/NON不同的可靠性传输模。在同等的Coap协议的技术实现中,Calinfornium框架在众多框架中以性能最优。如下:二.Californium的项目结构目前Californium 项目的托管地址在:http..._[pserver(main)#5] o.e.californium.core.network.udpmatcher : error receiving

PHP的getimagesize读取远程图片慢的解决方法_php getimagesize远程图片-程序员宅基地

文章浏览阅读238次。PHP的getimagesize读取远程文件,使用的方法本质上跟file_get_contents一样,所以都会出现非常耗时的情况。_php getimagesize远程图片

计算机应用技术专业与计算机网络技术专业的区别_计算机网络红人计算机应用区别-程序员宅基地

文章浏览阅读5.7k次,点赞7次,收藏17次。计算机应用技术比较偏向软件方向,培养掌握计算机应用专业必要的基础理论、常用计算机软件操作和编程语言,培养目标是具有较强实践技能的高级计算机应用型人才。专业课主要有:计算机软硬件技术基础、Linux操作系统、数据库系统SQL、数据结构与C程序设计、计算机网络原理、高级语言汇编、Java语言程序设计、图形图像应用处理(PhotoShop)、微机原理与接口技术、C语言、数据结构、操作系统、平面设计、VB..._计算机网络红人计算机应用区别

docker获取不到镜像,pod容器(dop-registry)起不来_docker容器regpositories网址出不来-程序员宅基地

文章浏览阅读916次,点赞18次,收藏13次。是 Docker 官方维护的一个服务,用于存储和分发 Docker 官方镜像,包括一些常见的操作系统、编程语言运行时环境等。通过使用 Docker 官方镜像注册表,用户可以方便地访问和获取到官方维护的镜像,用于构建、运行和部署他们的容器化应用程序。kube-flannel是一个在Kubernetes集群中用于网络通信的网络解决方案。kube-flannel使用了一个虚拟的overlay网络,它允许Kubernetes节点之间的容器在不同的主机上进行通信,同时保持网络的简单性和性能。_docker容器regpositories网址出不来

随便推点

卖萌屋算法工程师思维导图part3—深度学习篇-程序员宅基地

文章浏览阅读717次。卖萌屋的妹子们(划掉)作者团整理的算法工程师思维导图,求职/自我提升/查漏补缺神器。该手册一共分为数据结构与算法、数学基础、统计机器学习和深度学习四个部分。下面是第三部分深度学习的内容~...

多项式与代数方程:代数几何的核心_代数方程和多项式的关系-程序员宅基地

文章浏览阅读58次。代数几何是数学的一个分支,研究多项式方程和它们的解的几何结构。它起源于古希腊时期,当时人们试图解决几何问题,如圆和直线的交点。随着时间的推移,代数几何发展成为一个独立的数学领域,涉及到许多复杂的概念和技术。代数几何作为一个成熟的数学领域,仍然在不断发展和拓展。更高效的算法:随着计算能力的提高,研究人员将继续寻找更高效的代数几何算法。与其他领域的交叉:代数几何将继续与其他数学领域和应用领域交叉,产生新的研究方向和应用。_代数方程和多项式的关系

python hasattr_Python hasattr()函数-程序员宅基地

文章浏览阅读443次。版本E:\Projects\testTool>python --versionPython 3.6.2定义先看一下官网是如何定义的:hasattr(object, name)**The arguments are an object and a string. The result is True if the string is the name of the object's attri..._python has_attr

Java Web使用过滤器防止Xss攻击,解决Xss漏洞 防止解决XSS注入攻击的过滤器filter XssHttpServletRequestWrapper_解决xss过滤符合-程序员宅基地

文章浏览阅读2.5k次,点赞11次,收藏64次。前段时间,博主在帮忙朋友给一个国营单位做的一个项目中,在上线的前期,客户要求检测漏洞,因此找到了专业的测评公司,测出来好多漏洞,其中就有xss攻击,我讲自己处理的方式分享给大家,便于大家少走弯路。package com.yl.filter;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStreamReader;i_解决xss过滤符合

微信小程序:上传图片报:当前系统代理不是安全代理,是否信任?_代理微信不能发图片-程序员宅基地

文章浏览阅读1.5k次。微信小程序:上传图片报:当前系统代理不是安全代理,是否信任?最近在做表单上传的功能,期中涉及到图片的上传,小谷的思路是将图片存到服务器,路径存到数据库中,但是发现wx.request提交数据没有问题,但是wx.upfile就出现了上面的问题。当前系统代理不是安全代理,是否信任?。之后小谷百度了,其中主要是两个问题1.重装系统,(不能根本解决问题,二次开机可能还会出现)2.删除中策表中的文件..._代理微信不能发图片

Maven2.0 Built-in property 汇总-程序员宅基地

文章浏览阅读129次。该文章汇总了Maven2.0中常用的一些Property, 所以这些properties都是从Maven的官方文档和Maven的用户邮件中搜集过来的. 注意, 因为所有的pom.*属性在Maven3中已经不推荐了, 所以下面只介绍project.* Build-in Properties: 内带的属性${basedir}, pom.xml文件所在的目录${version}, ..._maven built-in

推荐文章

热门文章

相关标签