SpringBoot 集成短信和邮件的配置示例详解

yizhihongxing

下面我将详细讲解“SpringBoot 集成短信和邮件的配置示例详解”的完整攻略。

1. 集成短信

1.1. 添加依赖

pom.xml 中添加阿里云短信 SDK 的依赖:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.0.3</version>
</dependency>

1.2. 配置参数

application.yml 文件中添加阿里云短信相关的配置参数:

aliyun:
  access-key-id: # 阿里云 AccessKeyId
  access-key-secret: # 阿里云 AccessKeySecret
  sms:
    sign-name: # 签名名称
    template-code: # 短信模板编号

1.3. 编写代码

@Service
public class SmsService {

    @Autowired
    private AliyunSmsProperties aliyunSmsProperties;

    @Autowired
    private IAcsClient acsClient;

    public void send(String phone, Map<String, String> templateParam) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain(aliyunSmsProperties.getDomain());
        request.setVersion(aliyunSmsProperties.getVersion());
        request.setAction(aliyunSmsProperties.getAction());

        // 设置手机号码和签名名称
        request.putQueryParameter("PhoneNumbers", phone);
        request.putQueryParameter("SignName", aliyunSmsProperties.getSignName());

        // 设置模板编号和模板参数
        request.putQueryParameter("TemplateCode", aliyunSmsProperties.getTemplateCode());
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(templateParam));

        CommonResponse response = acsClient.getCommonResponse(request);
        JSONObject jsonObject = JSONObject.parseObject(response.getData());
        if (!"OK".equals(jsonObject.getString("Code"))) {
            throw new RuntimeException("短信发送失败");
        }
    }
}

2. 集成邮件

2.1. 添加依赖

pom.xml 中添加邮件相关的依赖:

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

2.2. 配置参数

application.yml 文件中添加邮件相关的配置参数:

spring:
  mail:
    host: # SMTP 主机名或 IP 地址
    port: # SMTP 端口号
    username: # 邮箱账户
    password: # 邮箱密码
    protocol: smtp
    default-encoding: UTF-8
    properties:
      mail.smtp.auth: true
      mail.smtp.starttls.enable: true
      mail.smtp.starttls.required: true
      mail.smtp.ssl.protocols: TLSv1.2

2.3. 编写代码

@Service
public class EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    public void send(String[] to, String subject, String text) {
        try {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
            messageHelper.setFrom(javaMailSender.getUsername());
            messageHelper.setTo(to);
            messageHelper.setSubject(subject);
            messageHelper.setText(text, true);
            javaMailSender.send(mimeMessage);
        } catch (Exception e) {
            throw new RuntimeException("邮件发送失败", e);
        }
    }
}

以上就是 SpringBoot 集成短信和邮件的详细攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 集成短信和邮件的配置示例详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java日常练习题,每天进步一点点(17)

    我来为你讲解“Java日常练习题,每天进步一点点(17)”的攻略。 首先,这个练习题共有两个小问题,我们分开来看。 问题一 要求 给定一个仅包含小写字母的字符串,去除字符串中重复的字符,使得每个字符都只出现一次。保证结果字符串中的字符在原字符串中出现顺序不变。例如,给定 “abadbc” ,返回 “abdc” 。 思路 首先我们需要字符串中每个字符只出现一次…

    Java 2023年5月20日
    00
  • Java字符串转成二进制码的方法

    下面是Java字符串转成二进制码的方法的完整攻略。 1. 字符串转为字节数组 将Java字符串转换成二进制码的第一步是将其转换为字节数组。我们可以使用Java中的getBytes()方法来完成这个任务。getBytes()方法将字符串转换为字节数组,并使用指定的字符集编码。 示例1: String str = "hello world";…

    Java 2023年5月26日
    00
  • jdbc链接远程数据库进行修改url操作

    jdbc是Java Database Connectivity的缩写,即Java数据库连接,是一种用于连接和操作关系型数据库的Java API。在访问数据库时,我们需要对jdbc进行配置,其中就包括jdbc的url地址。当我们需要连接远程数据库并修改其url地址时,需要进行以下步骤: 1. 加载数据库驱动 在使用jdbc连接数据库之前,需要将数据库驱动程序加…

    Java 2023年6月16日
    00
  • Java实现矩阵乘法以及优化的方法实例

    Java实现矩阵乘法以及优化的方法实例 背景 矩阵乘法是线性代数中的基本操作,具体实现方法是将两个矩阵进行乘法运算,得到一个新的矩阵。在Java中,我们可以使用循环遍历的方式逐个计算矩阵元素,但是这样效率较低,需要使用优化算法来提高计算速度。 算法介绍 基本矩阵乘法 假设有两个矩阵A(mn),B(np),结果矩阵C(m*p),它们的乘法运算式如下所示: $C…

    Java 2023年5月19日
    00
  • 如何在 Java 中实现不可变类

    如何在Java中实现不可变类? 不可变类是指在创建后不可修改的类。在Java中,不可变类是线程安全的,因为不需要同步机制就可以在多线程下使用。 创建不可变类需要遵循以下四个步骤: 将类声明为final,这将防止其他类继承它。 将所有的成员变量声明为私有的final,这将防止其他类修改它们。 不要提供任何修改成员变量的方法,例如setters()。 如果一个对…

    Java 2023年5月26日
    00
  • Spring Security整合KeyCloak保护Rest API实现详解

    Spring Security整合KeyCloak保护Rest API实现详解 简介 本篇文章主要介绍如何使用Spring Security整合KeyCloak保护Rest API。 前置条件 在开始本文之前,你应该已经了解过以下知识: Spring Boot Spring Security Rest API设计基础 OAuth2.0和OpenID Conn…

    Java 2023年5月20日
    00
  • SpringBoot @Import与@Conditional注解使用详解

    下面是关于“SpringBoot @Import与@Conditional注解使用详解”的完整攻略。 标题 一、@Import注解的使用 @Import注解是Spring Framework中的一个注解,用于引入其他的Component。在Spring Boot中,@Import注解常用于引入自定义的Configuration类。下面是一个示例代码: @Co…

    Java 2023年5月19日
    00
  • Jackson2的JsonSchema实现java实体类生成json方式

    当使用Jackson2进行Java对象的序列化和反序列化时,我们可以使用Jackson2的JsonSchema功能来生成Java实体类的JSON描述。这些描述包括属性的标识符、类型和其他约束。它们可以用于生成文档、验证和其他用途。 以下是使用Jackson2的JsonSchema生成Java实体类的步骤: 步骤1. 添加依赖 要使用Jackson2的Json…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部