メール配信を予約する
作成したメール文面を配信予約するには、POST /api/v1/add_delivery_schedule を使用します。
この API はテキスト、HTML、マルチパートなど、すべてのメールタイプの配信予約に対応しています。
リクエスト
| キー | データ型 | 必須 | 説明 |
|---|---|---|---|
mail_message_id | Integer | ○ | 配信するメール文面のID。 |
delivery_info | Object | ○ | 配信予約の詳細情報を格納したオブジェクト。 |
delivery_info オブジェクトの詳細
| キー | データ型 | 必須 | 説明 |
|---|---|---|---|
title | String | ○ | 配信予約の名称。管理画面の「配信履歴」に表示されます。 |
condition_id | Integer | ○ | 配信対象を絞り込むための抽出条件ID。1を指定すると全員に配信します。 |
element_id | Integer | ○ | 配信に使用するメールアドレス項目のID。 |
delivery_date | Integer | ○ | 配信日時をUNIXタイムスタンプで指定します。 |
注意
- API で配信予約を行う場合、確認メールは送信されません。
レスポンス
成功すると、登録された配信予約の ID が返されます。
サンプルコード
テキストメールの文面を作成し、即時配信予約を行う例です。HTML メールやマルチパートメールも同様の手順で配信できます。
特定の会員だけに配信するには?
あらかじめ KREISEL の管理画面で、配信対象者を絞り込むための「抽出条件」を作成しておく必要があります。condition_idにその抽出条件の ID を指定することで、ターゲティング配信が可能です。
- PHP
<?php
$environmentId = getenv("ENV_ID");
$apiUrlBase = "https://krs.bz/$environmentId/api/v1/";
$apiToken = getenv("API_TOKEN"); // 取得したAPIトークンに置き換えてください
// 共通cURLオプション
$commonCurlOptions = [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
],
];
try {
// 1. メール文面の作成
$mailInfo = [
'type' => 1, // テキストメール
'from' => 'foo@example.com',
'from_desc' => 'トライコーン',
'subject' => '件名サンプル',
'text_part' => 'このメールはテキストメールです。'
];
$addMessageParams = [
'member_table_id' => 1,
'mail_info' => $mailInfo,
];
$ch = curl_init($apiUrlBase . 'add_mail_message');
curl_setopt_array($ch, $commonCurlOptions);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($addMessageParams));
$response_body = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
throw new Exception('メール文面作成失敗: ' . $response_body);
}
$mailMessageId = json_decode($response_body, false);
echo 'メール文面を作成しました。ID: ', $mailMessageId, PHP_EOL;
curl_close($ch);
// 2. 配信予約の作成
// 実行時刻から直近の5分単位の時刻を計算
$now = time();
$deliveryTimestamp = $now + (300 - $now % 300);
$deliveryInfo = [
'title' => date('Y年m月d日 H時i分', $deliveryTimestamp) . '配信',
'condition_id' => 1, // 全員に配信
'element_id' => 7, // メールアドレス項目のID
'delivery_date' => $deliveryTimestamp
];
// 特定の会員だけに配信する場合は、事前に作成した抽出条件のIDを指定します
// 'condition_id' => 2,
$addScheduleParams = [
'mail_message_id' => $mailMessageId,
'delivery_info' => $deliveryInfo,
];
$ch = curl_init($apiUrlBase . 'add_delivery_schedule');
curl_setopt_array($ch, $commonCurlOptions);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($addScheduleParams));
$response_body = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
throw new Exception('配信予約失敗: ' . $response_body);
}
$deliveryId = json_decode($response_body, false);
echo '配信予約を行いました。配信ID: ', $deliveryId, PHP_EOL;
curl_close($ch);
} catch (Exception $e) {
echo 'エラー: ', $e->getMessage(), PHP_EOL;
}