このトピックでは、Direct Mail のソフトウェア開発キット (SDK) のインストール方法と使用方法について説明します。
Direct Mail API 操作を呼び出すには、OpenAPI Explorer を使用して、クエリ、デバッグ、およびサンプルコードの生成ができます。
プロセスは次のとおりです:
1. OpenAPI Explorer ページに移動
次の例では、メールの送信方法を示します:
メールの送信 (デバッグとコード例)
単一メールの送信:
デバッグとサンプルコードのエントリポイント:
https://api.alibabacloud.com/api/Dm/2015-11-23/SingleSendMail
ループ呼び出しと同時呼び出しがサポートされています。
1 つのリクエストで最大 100 件の受信者アドレスをサポートします。その他のパラメーターの詳細については、「SingleSendMail」をご参照ください。
一括メールの送信:
デバッグとサンプルコードのエントリポイント:
https://api.alibabacloud.com/api/Dm/2015-11-23/BatchSendMail
コンソールで作成した、または API 操作を呼び出して作成したテンプレートと受信者リストを使用して、一括メールを送信できます。その他のパラメーターの詳細については、「BatchSendMail」をご参照ください。
2. API 操作のクエリとパラメーターの指定
推奨されるデフォルトの API バージョン 2015-11-23 を使用できます。バージョン番号は変更されませんが、API 操作は継続的に最適化および更新されます。

API 操作ドキュメントを表示できます:

3. プログラミング言語の選択とデバッグ
プログラミング言語を選択し、[Initiate Call] をクリックします。

4. 呼び出しのサンプルコードの生成
方法 1: Direct Mail SDK の使用
SDK インストールコマンドの取得
テストが成功したら、ローカルマシンまたはテストサーバーに SDK をインストールできます。
SDK Information セクションで、Direct Mail SDK のバージョンとインストールコマンドを表示できます。


方法 2: CommonRequest の使用
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',"Subject")
request.add_body_params('HtmlBody','''<h1>Content</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("An error occurred while reading the file: " + 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'
リファレンス:
5. その他の考慮事項
AccessKey ペアの作成
Alibaba Cloud アカウントにログインした後、デバッグページで AccessKey を入力する必要はありません。ただし、ローカルマシンまたはサーバーで SDK を使用する場合は、コードに AccessKey を設定する必要があります。
Alibaba Cloud Resource Access Management (RAM) サービスを使用して作成された AccessKey ペアを使用することもできます。
AccessKey 管理コンソールにログインします。
ページの右上隅にある [Create AccessKey] をクリックします。[Create AccessKey] ダイアログボックスが表示されます。
プロンプトを読み、[OK] をクリックします。
コードに AccessKey ID または AccessKey Secret をハードコーディングしないでください。セキュリティリスクの原因となる可能性があります。
オペレーティングシステムで ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を環境変数として定義できます。Alibaba Cloud SDK は、これらの値を環境変数から取得して ID 検証を行うことができます。詳細については、「認証情報の設定」をご参照ください。