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

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

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

收录于:93天前

项目中经常会用到电子邮件,比如通过电子邮件发送通知。例如,通过电子邮件注册、身份验证、密码找回、系统报警通知、报告信息等。本文将帮助您快速实现一个通过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);
            }
        }
    }

检测结果:

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

. . .

相关推荐

额外说明

Kotlin 基础知识 - 枚举、when、in、for

枚举 声明只有值的枚举 enum class Color { RED, GREEN, BLUE } 此外还可以增加属性和方法,如果需要在枚举类中定义方法,要使用分号把枚举常量列表和方法定义分开,这也是Kotlin唯一必须使用分号的地方 enum

额外说明

SQL-存在

文章目录 前言 案例 扩展 前言 exists用于where条件语句之后,属于子查询的一种形式。 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。 案例 查询指定表,如果满足exists条

额外说明

平台工作原理

平台总线体系的工作流程: 1.1 第一步:系统启动时在bus系统中注册platform 1.2 第二步:内核移植的人负责提供platform_device 1.3 第三步: 写驱动的人负责提供platform_driver 1.4 第四步:platfor

额外说明

windows下eclipse+arm-none-eabi-gcc+J-link编译环境

1 . 安装Eclipse IDE for Embedded C/C++ Developers https://www.eclipse.org/downloads/packages/ eclipse-embedcpp-2020-12-R-win32-x8

额外说明

springboot+vue音乐网站实战项目

文章目录 前言 一.成果展示 二. 后端流程 2.1数据库表设计 2.2. 后端搭建 2.2.1 mybatis-plus逆向工程生成代码简化开发 2.2.2 配置数据,跨域和静态资源放行 2.3. 流水线式开发模式 三.前端vue搭建 3.1 前端基本

额外说明

Unity中Shader阴影的投射

文章目录 前言 一、我们急需使用之前 Offset 中的Shader作为测试 二、生成阴影 1、添加"LightMode" = "ShadowCaster"的Pass. 2、appdata中声明float4 vertex:POSITION;和half3

额外说明

springboot单元测试的详细介绍

当开发一个复杂的应用程序时,确保代码的正确性和稳定性至关重要。在这方面,单元测试是一个不可或缺的工具,它可以帮助开发人员验证代码的各个部分是否按预期工作。Spring Boot提供了丰富的测试支持,使编写和执行单元测试变得更加容易和高效。在本文中,我们将

额外说明

将2019拆分成三个整数的平方和

早上看到译友铁冰在朋友圈里发了一条消息,说2019真是个神奇的数字。 将2019拆分成三个整数的平方和。只给了6个,我问他:“遍历完了吗?” 他回答:“完了!”   下面,编写一个Java程序来验证一下。 package net.hw.test; pu

额外说明

leetcode 124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路

额外说明

【win 10】win 10:xshell & xftp 的下载和安装、xshell 6 评估期已过解决方法

目录 一、xshell 的绿色安装(包含xftp) 二、xshell 的普通安装 三、xftp的绿色安装 四、xftp的普通安装(有使用期限限制) 五、xshell 6 评估期已过解决方法 六、xshell 6和xftp 6 绿色安装【推荐】 一、xsh

ads via 小工具