SDK 手册

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍了如何安装和使用邮件推送SDK。

当需要调用邮件推送接口时,我们建议通过OpenAPI进行接口的查询、调试和生成示例代码。

下面是基本步骤:

一、进入OpenAPI调试页面

以发送邮件接口为例:

发送邮件(调试和代码示例)

发送单条邮件:

调试和代码示例入口:

https://next.api.aliyun.com/api/Dm/2015-11-23/SingleSendMail

说明

支持循环和并发调用。

单次请求支持100个收信地址。其他参数请参考文档:SingleSendMail

批量发送邮件:

调试和代码示例入口:

https://next.api.aliyun.com/api/Dm/2015-11-23/BatchSendMail

说明

使用控制台或接口创建的模板和收件人列表进行批量发信。其他参数请参考文档:BatchSendMail

二、查询相关接口并填写参数

请使用默认推荐的接口版本2015-11-23,该名称不变,但接口会持续优化更新。

image

查看接口文档说明:

image

三、选择开发语言调试

选择开发语言,并点击“发起调用”。

image

四、生成调用代码示例

方式一:使用邮件推送产品SDK

获取SDK安装命令

测试通过后,就可以前往本地或测试服务器进行安装SDK了。

在“SDK信息”中,可以查看邮件推送SDK的版本和安装命令。

image

image

方式二:使用CommonRequest的方式

建议使用Body传参而非URL,以免因为URL过长被拦截。

泛化调用1.0示例:

# -*- coding:utf-8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyunsdkcore.auth.credentials import AccessKeyCredential

v_ak='xxxxxx'
v_sk='xxxxxx'
credentials = AccessKeyCredential(v_ak,v_sk)
client = AcsClient(region_id='cn-hangzhou', credential=credentials)

request = CommonRequest()
request.set_accept_format('json')
request.set_domain('dm.aliyuncs.com')
request.set_method('POST')
request.set_protocol_type('https') # https | http
request.set_version('2015-11-23')
request.set_action_name('SingleSendMail')

# request.add_query_param('AccountName', "xxx")
# request.add_query_param('AddressType', "1")
# request.add_query_param('ReplyToAddress', "true")
# request.add_query_param('ToAddress', "xxx")
# request.add_query_param('Subject', "test")
request.add_body_params('AccountName','sender@example.com')
request.add_body_params('FromAlias',"xxx")
request.add_body_params('AddressType',"1")
request.add_body_params('ReplyToAddress',"true")
request.add_body_params('ToAddress',"recipient@example.com")
request.add_body_params('Subject',"主题")
request.add_body_params('HtmlBody','''<h1>内容</h1>''')
response = client.do_action_with_exception(request)

print(request.get_url('cn-hangzhou',v_ak, v_sk))
print(str(response, encoding = 'utf-8'))
package org.example;

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;


import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
/*
pom.xml
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.6.0</version>
</dependency>
*/

public class QueryBody {
    public static void main(String[] args) throws Exception {

        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "xxxxxx", "xxxxxx");
        
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();

        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dm.aliyuncs.com");
        request.setSysVersion("2015-11-23");
        request.setSysAction("SingleSendMail");
        request.putBodyParameter("AccountName", "sender@example.com");
        request.putBodyParameter("AddressType", "1");
        request.putBodyParameter("ReplyToAddress", "true");
        request.putBodyParameter("Subject", "11");
        request.putBodyParameter("ToAddress", "recipient@example.com");
        request.putBodyParameter("HtmlBody", getContent());
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }

    }
    private static String getContent() throws Exception {
        String filename = "C:\\Users\\Downloads\\111.txt";
        try {
            String content = new String(Files.readAllBytes(Paths.get(filename)));
            System.out.println("content size is" + getStrKBSize(content) + "B");
            return content;
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("读取文件时发生错误: " + e.getMessage());
        }
        return filename;
    }
    private static double getStrKBSize(String str){
        if(str==null){
            return 0.0;
        }
        return str.getBytes().length;
    }
}

C#示例:

C#语言SDK发送长内容时,报错“Invalid URI: The Uri string is too long”

其他相关文档:

Java泛化调用1.0说明

Java泛化调用2.0说明

五、其他注意事项

创建AccessKey

登录主账号后,调试页面无须填写Key值,但是本地或服务器使用时需要进行代码配置。

(注:也可以使用阿里云访问控制服务创建的AccessKey。)

  1. 登录AccessKey管理控制台

  2. 单击页面右上角按钮创建 AccessKey,弹出创建对话框。

  3. 阅读提示后,单击确定

警告

请勿在代码中硬编码"accessKeyId","accessKeySecret"值,以免泄露。

阿里云SDK支持在操作系统的环境变量中定义ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET的值,代码中从环境变量获取后进行鉴权,参考文档:身份验证配置