ver.1サポートサイト


EXPRESS 2(PHP)

最終更新日:2024年02月01日

EXPRESS2の配信設定をするサンプルプログラムです。

本サンプルプログラムは外部呼出し(スパイラル以外のサーバから動作させる場合)と内部呼出し(スパイラル内部で動作させる場合)と分けて記載をしています。

利用する用途によって使用するサンプルプログラムの使い分けを行ってください。

※外部呼出しに利用するサンプルプログラムにはスパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますのでご注意ください。

使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。

※内部呼出しを利用する場合はアカウント内APIの設定を「ON」に変更する必要があります。

外部呼出しを利用する場合

<?php

/**
 * [ 概要 ]
 * スパイラルのAPIを使ったサンプルプログラムです。
 *
 * [ サンプルで行う事 ]
 * - データベースに登録されたメールアドレスリストへメールを一斉配信する
 *
 * UTF8で保存してください。
 */

/**
 * [サンプルを動かすための準備]
 *
 * 1. PHPにcurlライブラリが組み込まれている必要があります。
 * 参考:http://www.php.net/manual/ja/intro.curl.php
 *
 * 2. スパイラルの操作画面の「DBグループ」「通常DB管理」で、以下のような構成でDBを発行します。
 *
 * DBタイトル:
 * member
 *
 * フィールド:
 * No1 フィールド名  :登録日時
 * フィールドタイプ:登録日時
 * 差替えキーワード:registDate
 *
 * No2 フィールド名  :メールアドレス
 * フィールドタイプ:メールアドレス(大・小文字を無視)
 * 差替えキーワード:email
 *
 * No3 フィールド名  :パスワード
 * フィールドタイプ:メッセージダイジェスト(SHA256)
 * 差替えキーワード:pass
 *
 * No4 フィールド名  :氏名
 * フィールドタイプ:テキストフィールド(64 bytes)
 * 差替えキーワード:name
 *
 * No5 フィールド名  :オプトアウト:stop
 * フィールドタイプ:オプトアウト
 * 差替えキーワード:stop
 * ※オプトアウトフィールドの追加方法は「配信停止を受け付けたい(https://support.smp.ne.jp/faq/mail-faq/f0008/ )」をご参照ください。
 *
 */

// スパイラルの操作画面で発行したトークンを設定します。
$TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
$SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";

// -----------------------------------------------------------------------------
// ロケータ
// -----------------------------------------------------------------------------

// ロケータのURL (変更の必要はありません)
$locator = "https://www.pi-pe.co.jp/api/locator";

// API用のHTTPヘッダ
$api_headers = array(
    "X-SPIRAL-API: locator/apiserver/request",
    "Content-Type: application/json; charset=UTF-8",
);

// リクエストデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN; //トークン

// JSON形式にエンコードします。
$json = json_encode($parameters);

// curlライブラリを使って送信します。
$curl = curl_init($locator);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);

// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);
$response_json = json_decode($response, true);

// サービス用のURL
$APIURL = $response_json['location'];

// -----------------------------------------------------------------------------
// 配信予約登録
// -----------------------------------------------------------------------------

// API用のHTTPヘッダ
$api_headers = array(
    "X-SPIRAL-API: deliver_express2/regist/request",
    "Content-Type: application/json; charset=UTF-8",
);

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $TOKEN;
$parameters["db_title"] = "member";
$parameters["passkey"] = time();
$parameters["mail_field_title"] = "email"; //メールフィールド
$parameters["reserve_date"] = "now"; //送信日時(nowは即時配信)
$parameters["subject"] = "APIからメール配信のテスト"; //サブジェクト
$parameters["body_text"] = "テストメールです。\nメールの本文です。"; //メール本文
$parameters["from_name"] = "テストプログラム"; //差出人名
$parameters["from_address"] = "test@example.com"; //差出人アドレス
$parameters["optout_field_title"] = "stop"; //オプトアウトフィールドのタイトル
$parameters["dkim_selector"] = "D20240201-test"; //DKIMセレクター名。作成者署名で配信する場合は必ず指定してください。

// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$parameters["signature"] = hash_hmac('sha1', $key, $SECRET, false);

// 送信用のJSONデータを作成します。
$json = json_encode($parameters);
echo "===> deliver_express2/regist\n";

// curlライブラリを使って送信します。
$curl = curl_init($APIURL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $api_headers);
curl_exec($curl);

// エラーがあればエラー内容を表示
if (curl_errno($curl)) echo curl_error($curl);
$response = curl_multi_getcontent($curl);
curl_close($curl);

// 画面に表示
print_r(json_decode($response, true));
?>

内部呼出しを利用する場合

<?php

/**
 * [ 概要 ]
 * スパイラルのAPIを使ったサンプルプログラムです。
 *
 * [ サンプルで行う事 ]
 * - データベースに登録されたメールアドレスリストへメールを一斉配信する
 *
 * 1. スパイラルの操作画面の「DBグループ」「通常DB管理」で、以下のような構成でDBを発行します。
 *
 * DBタイトル:
 * member
 *
 * フィールド:
 * No1 フィールド名  :登録日時
 * フィールドタイプ:登録日時
 * 差替えキーワード:registDate
 *
 * No2 フィールド名  :メールアドレス
 * フィールドタイプ:メールアドレス(大・小文字を無視)
 * 差替えキーワード:email
 *
 * No3 フィールド名  :パスワード
 * フィールドタイプ:メッセージダイジェスト(SHA256)
 * 差替えキーワード:pass
 *
 * No4 フィールド名  :氏名
 * フィールドタイプ:テキストフィールド(64 bytes)
 * 差替えキーワード:name
 *
 * No5 フィールド名  :オプトアウト:stop
 * フィールドタイプ:オプトアウト
 * 差替えキーワード:stop
 * ※オプトアウトフィールドの追加方法は「配信停止を受け付けたい(https://support.smp.ne.jp/faq/mail-faq/f0008/ )」をご参照ください。
 *
 */

// APIコミュニケータをセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

//==========================================================
// 配信予約登録
//==========================================================

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("db_title", "member");
$request->put("reserve_date", "now"); //送信日時(nowは即時配信)
$request->put("mail_field_title", "email"); //メールフィールド
$request->put("subject", "APIからメール配信のテスト。"); //サブジェクト
$request->put("from_address", "test@example.com"); //差出人アドレス
$request->put("from_name", "テストプログラム"); //差出人名
$request->put("body_text", 'テストメールです。\nメールの本文です。'); //メール本文
$request->put("optout_field_title", "stop"); //オプトアウトフィールドのタイトル
$request->put("dkim_selector", "D20240201-test"); //DKIMセレクター名。作成者署名で配信する場合は必ず指定してください。

// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("deliver_express2", "regist", $request);

//配信予約のルールIDを取得
$r_id = $response->get("rule_id");

// レスポンスの取得
if ($response->get("code") == 0) {
    echo "<p>deliver_express2/regist 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
    echo "<p>deliver_express2/regist エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);
?>