本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍了如何安装和使用邮件推送SDK。
当需要调用邮件推送接口时,我们建议通过OpenAPI进行接口的查询、调试和生成示例代码。
下面是基本步骤:
一、进入OpenAPI调试页面
以发送邮件接口为例:
发送邮件(调试和代码示例)
发送单条邮件:
调试和代码示例入口:
https://next.api.aliyun.com/api/Dm/2015-11-23/SingleSendMail
支持循环和并发调用。
单次请求支持100个收信地址。其他参数请参考文档:SingleSendMail。
批量发送邮件:
调试和代码示例入口:
使用控制台或接口创建的模板和收件人列表进行批量发信。其他参数请参考文档:BatchSendMail。
二、查询相关接口并填写参数
请使用默认推荐的接口版本2015-11-23,该名称不变,但接口会持续优化更新。
查看接口文档说明:
三、选择开发语言调试
选择开发语言,并点击“发起调用”。
四、生成调用代码示例
方式一:使用邮件推送产品SDK
获取SDK安装命令
测试通过后,就可以前往本地或测试服务器进行安装SDK了。
在“SDK信息”中,可以查看邮件推送SDK的版本和安装命令。
方式二:使用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”
其他相关文档:
五、其他注意事项
创建AccessKey
登录主账号后,调试页面无须填写Key值,但是本地或服务器使用时需要进行代码配置。
(注:也可以使用阿里云访问控制服务创建的AccessKey。)
单击页面右上角按钮创建 AccessKey,弹出创建对话框。
阅读提示后,单击确定。
请勿在代码中硬编码"accessKeyId","accessKeySecret"值,以免泄露。
阿里云SDK支持在操作系统的环境变量中定义ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的值,代码中从环境变量获取后进行鉴权,参考文档:身份验证配置。