小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

阿里云企业邮箱基于Spring Boot快速实现发送邮件功能

阿里云,spring boot,云计算 额外说明

收录于:52天前

项目中经常会用到电子邮件,比如通过电子邮件发送通知。例如,通过电子邮件注册、身份验证、密码找回、系统报警通知、报告信息等。本文将帮助您快速实现一个通过SpringBoot发送电子邮件的功能。

邮件协议

让我们简单了解一下常见的电子邮件协议。常用的电子邮件协议包括SMTP、POP3和IMAP4,它们都属于TCP/IP协议簇。默认情况下,分别通过 TCP 端口 25、110 和 143 建立连接。

SMTP协议

SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于将邮件从源地址传输到目标地址的规范,它控制邮件的传输方式。它的一个重要特点是可以中继传输中的电子邮件,即电子邮件可以通过不同网络上的主机进行中继。

SMTP认证,简单来说就是要求您必须提供账户名和密码才可以登录SMTP服务器,这就给传播垃圾邮件的人留下了可乘之机。添加SMTP验证的目的是保护用户免受垃圾邮件的侵害。 SMTP 已成为电子邮件传输的事实上的标准。

POP协议

POP 邮局协议负责从邮件服务器检索电子邮件。它要求邮件服务器完成以下任务之一:从邮件服务器检索邮件以及从服务器删除邮件;从邮件服务器检索邮件但不删除它;不要取回邮件,只是询问是否有新邮件到达。

POP 协议支持多用户 Internet 邮件扩展,该扩展允许用户将二进制文件附加到电子邮件,例如文字处理文件和电子表格文件。这几乎允许传输任何文件格式,包括图像和声音文件。当用户阅读邮件时,POP命令立即将所有邮件信息下载到用户计算机上,并不保留在服务器上。

POP3(邮局协议3)是邮局协议的第三个版本,也是第一个互联网电子邮件离线协议标准。

IMAP协议

Internet 信息访问协议 (IMAP) 是一种优于 POP 的新协议。与 POP 一样,IMAP 可以下载邮件、从服务器删除邮件或请求新邮件,但 IMAP 克服了 POP 的一些缺点。例如,它可以确定客户端如何请求邮件服务器提交传入邮件,请求邮件服务器仅下载选定的邮件而不是所有邮件。客户端可以在决定是否下载电子邮件之前阅读电子邮件的标题和发件人的姓名。

通过用户的客户端电子邮件程序,IMAP 允许用户在服务器上创建和管理邮件文件夹或邮箱、删除邮件以及查询部分或全部信件,而无需从服务器中删除邮件。下载到用户的个人计算机。

常用的支持IMAP的电子邮件客户端包括:ThunderMail、Foxmail、Microsoft Outlook等。

SpringBoot集成Mail功能

如果不使用SpringBoot,则需要自己封装消息体等信息,实现起来相当复杂。但基于Spring Boot发送邮件时,几乎可以说,只需要引入spring-boot-starter-mail就可以轻松完成发送邮件。

本质上是因为 Spring 为 Mail 引入了 JavaMailSender 类,Spring Boot 在此基础上对其进行了进一步封装,从而实现了轻松发送电子邮件的集成。而且JavaMailSender类提供了强大的邮件发送功能,支持多种类型的邮件发送。

Spring依赖配置

集成步骤非常简单。将以下依赖添加到项目中:

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

Spring配置项

spring:
  mail:
    host: smtp.qiye.aliyun.com
    password: 阿里云邮箱登陆密码
    username: xxx@企业.com
    port:
    default-encoding: UTF-8
    protocol: smtp
    properties:
      mail.smtp.auth: true
      mail.smtp.starttls.enable: true
      mail.smtp.starttls.required: true
      mail.smtp.socketFactory.port: 465
      mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
      mail.smtp.socketFactory.fallback: false


email_address_list: 用户1@企业.com,用户2@企业.com

发送邮件的代码如下:


    @Autowired
    private JavaMailSenderImpl mailSender;
    @Value("${email_address_list}")
    private String emailAddressList;

private void sendEmail(String subject, String text) {
        String[] emailList = emailAddressList.split(",");

        if (emailList.length > 0) {
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            simpleMailMessage.setFrom("用户1@企业.com");
            simpleMailMessage.setTo(emailList);
            simpleMailMessage.setSubject(subject);
            simpleMailMessage.setText(text);
            try {
                mailSender.send(simpleMailMessage);
            } catch (MailException e) {
                log.info("邮件发送失败:",e);
            }
        }
    }

检测结果:

参考阿里云官方文档:阿里云文档

. . .

相关推荐

额外说明

SpringBoot实用教程(七) |集成 JPA

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 目录 一、初始化springboot项目 二、引入依赖文件 三、编写配置文

额外说明

'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique

      是因为pom.xml文件中写了两次jar引用!!   如: <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <v

额外说明

docker中mysql启动端口号始终被占用问题的解决办法

解决: 1 查 netstat -lnp|grep 3306 2 杀 kill -9 3819 3 再查 netstat -lnp|grep 3306 4 发现还有,杀不尽 5 重启docker 6 杀 killall mysqld 7 查 lsof -

额外说明

VUE_异步更新机制nextTick

Vue.nextTick(function () { // DOM 更新了 }) this.$nextTick(()=>{ // DOM 更新了 }) ①. 在下一DOM更新循环结束之后执行连续的替代。在修

额外说明

【SpringBoot教程】SpringBoot开发HTTP接口GET请求实战

⛪ 专栏地址 系列教程更新中 - 专栏介绍: 本专栏为SpringBoot+Spring+Mybatis的系列零基础教程,从框架的基础知识讲起,从0开始实现一个在线教育实战项目 - 源码获取: 项目中的资料可以通过文章底部公众号联系我获取,或者+V 【y

额外说明

Unity中Shader的光照衰减

文章目录 前言 一、衰减原理 1、使用一张黑白渐变贴图用于纹理采样 2、把模型从世界坐标转化为灯光坐标(即以灯光为原点的坐标系) 3、用转化后的模型坐标,对黑白渐变纹理进行纹理采样 4、最后,把采样后的结果与光照模型公式的结果相乘输出 二、光照衰减实现

额外说明

7.23 ToolTip 实现全介绍

ToolTip 是什么? ToolTip , 常翻译为提示框, 页面的效果是鼠标移到到某个页面元素时,弹出一个对话框显示。 实现的效果如下: 在Ext JS的应用中,ToolTip 一般使用在: Button按钮: 用更多的文字解释该按钮的功能。 Gri

额外说明

无心剑英译北岛诗9首

文章目录 1、回答 2、冷酷的希望 3、一切 4、纪念日 5、迷途 6、那时我们有梦 7、无题 8、宣告 9、结局或开始——献给遇罗克 1、回答 回答 Reply 北岛 By Bei Dao 卑鄙是卑鄙者的通行证, 高尚是高尚者的墓志铭, 看吧,在那镀金

额外说明

基于 Vite + Vue3 的组件库打包并发布到npm

基于 Vite + Vue3 的组件库打包并发布到npm 创建组件 src/components 目录下,新建 vue 组件,以 MyButton.vue 为例; 注意一定要写 name 属性 <template> <el-row class="

ads via 小工具