SpringBoot整合阿里云邮件推送服务

前言

参考阿里云官方文档

邮件服务配置

1. 配置域名

在邮件推送控制台创建一个子域名,如果没有主域名,请自行购买。
例:若您的主域名是aliyun.com,您可以使用xxx.aliyun.com,'xxx’部分是您自定义的。注意:后续截图都以xxx.aliyun.com为例,请替换为自己的域名。
在这里插入图片描述

2. 获取记录值

进入路径:邮件推送控制台—-发信域名—-配置;

该页数据会在域名解析时需要使用。
在这里插入图片描述

3. 在域名提供商处配置域名解析

添加Step2对应的4条记录,结果类似
在这里插入图片描述

4. 创建发信地址

创建发信地址,请按需选择类型,不可乱用通道:

触发邮件:由事件触发的邮件,如注册通知、交易通知、验证找密等系统通知邮件。

批量邮件:发送给会员的订阅邮件,如产品推广、用户关怀、期刊资讯等邮件。
在这里插入图片描述
若无回信地址,可置空。

5. 控制台发信

若少量发信可使用控制台发信方式,请提交模板审核,上传收件人列表,审核后即可开始发信。
在这里插入图片描述

6. 新建子用户并授权

为邮件推送服务这个权限,创建一个具有该权限的子用户,将不同子用户的权限分离,方便管理。

创建子用户

在RAM访问控制的页面,新建一个用户,进行邮件推送服务的授权,然后获取其accessKeyId和accessKeySecret。在这里插入图片描述

授权

在这里插入图片描述
搜索并选择邮件推送权限,这里已经添加过了。
在这里插入图片描述
OK啦

代码

1. 引入依赖

在要进行配置的模块中引入以下依赖

		<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dm20151123</artifactId>
            <version>1.0.5</version>
            <scope>compile</scope>
        </dependency>

2. 添加配置

mail:
  # 你的accessKeyId 
  accessKeyId: 
  # 你的accessKeySecret
  accessKeySecret: 
  # 账号,即发信地址
  accountName: 
  # accountName的类型,0为随机账号,1为发信地址
  addressType: 1
  # 别名
  fromAlias: 
  # 邮件主题
  subject: 

3. 添加邮件配置类

  1. 注意,这里必须要有非静态的setter方法,可以使用@Data注解,也可以手动添加。
    注意,非静态!即 set方法不能有static关键字
    否则, 配置文件中的值获取不到哦~

  2. 注意关注引入的依赖哦~

package com.ruoyi.common.config;

import com.aliyun.dm20151123.Client;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "mail")
public class MailConfig {

    /**
     * AccessKey ID
     */
    private static String accessKeyId;

    /**
     * AccessKey Secret
     */
    private static String accessKeySecret;

    /**
     * 发信地址
     */
    private static String accountName;

    /**
     * 发信地址类型
     */
    private static Integer addressType;

    /**
     * 发信人昵称
     */
    private static String fromAlias;

    /**
     * 邮件主题
     */
    private static String subject;

    /**
     * 使用AK&SK初始化账号Client
     * @return Client
     * @throws Exception
     */
    public static Client createClient() throws Exception {
        Config config = new Config()
                .setAccessKeyId(accessKeyId)
                .setAccessKeySecret(accessKeySecret);
        // 服务地址
        config.endpoint = "dm.aliyuncs.com";
        return new Client(config);
    }

    public static String getAccessKeyId() {
        return accessKeyId;
    }

    public void setAccessKeyId(String accessKeyId) {
        MailConfig.accessKeyId = accessKeyId;
    }

    public static String getAccessKeySecret() {
        return accessKeySecret;
    }

    public void setAccessKeySecret(String accessKeySecret) {
        MailConfig.accessKeySecret = accessKeySecret;
    }

    public static String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        MailConfig.accountName = accountName;
    }

    public static Integer getAddressType() {
        return addressType;
    }

    public void setAddressType(Integer addressType) {
        MailConfig.addressType = addressType;
    }

    public static String getFromAlias() {
        return fromAlias;
    }

    public void setFromAlias(String fromAlias) {
        MailConfig.fromAlias = fromAlias;
    }

    public static String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        MailConfig.subject = subject;
    }
}

4. 发信

注意一下引入的依赖哦~

import com.aliyun.dm20151123.Client;
import com.aliyun.dm20151123.models.SingleSendMailRequest;
import com.aliyun.dm20151123.models.SingleSendMailResponse;
import com.aliyun.teautil.Common;

public static void sendEmail(String toAddress) {
        if (StringUtils.isEmpty(toAddress))
            return false;

        // Client
        try {
            Client client = MailConfig.createClient();
            SingleSendMailRequest singleSendMailRequest = new SingleSendMailRequest()
                    .setAccountName(MailConfig.getAccountName())
                    .setFromAlias(MailConfig.getFromAlias())
                    .setAddressType(MailConfig.getAddressType())
                    .setTagName(MailConfig.getTagName())
                    .setSubject(MailConfig.getSubject())
                    .setHtmlBody(html)
                    .setToAddress(toAddress)
                    .setReplyAddress("")
                    .setReplyToAddress(false);

            SingleSendMailResponse response = client.singleSendMail(singleSendMailRequest);
            System.out.println(Common.toJSONString(response));

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

5. 完成啦

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值