SERVICE

各言語でのサンプルコード PHP

スリーメール


PHP版サンプル

/API/setを使用してメール配信の設定を行うサンプルです。

接続先ホスト名(example.com)および、接続時のIDとパスワード(login_id, password)につきましては適宜ご変更ください。

//APIへ送信するデータ
//$_REQUESTの部分については、可能であれば$_POSTか$_GETを指定してください
//今回はサンプルの為、汎用性を考えて$_REQUESTとします
$post_data = array(
    "login_id" => "login@example.com",             //ログインID
    "password" => "password",                      //ログインパスワード
    "subject" => $_REQUEST['subject'],             //メールタイトル
    "body" => $_REQUEST['body'],                   //メール本文
    "from_address" => $_REQUEST['from_address'],   //Fromアドレス
    "from_txt" => $_REQUEST['from_txt'],           //Fromテキスト
    "returnpath" => $_REQUEST['returnpath'],      //メール返信先(エラー時)
    "auto_return" => $_REQUEST['auto_return'],     //自動リターン集計
    "replyto" => $_REQUEST['replyto'],             //メール返信先
    "start_sending" => $_REQUEST['start_sending'], //メール配信開始日時について
    "year" => $_REQUEST['year'],                   //メール配信日(年)
    "month" => $_REQUEST['month'],                     //メール配信日(月)
    "day" => $_REQUEST['day'],                     //メール配信日(日)
    "hour" => $_REQUEST['hour'],                   //メール配信日(時)
    "min" => $_REQUEST['min']                      //メール配信日(分)
);
    
//送信するファイル名のリスト
$post_data_files = array('file', 'file_to_attach');
    
//APIのHostを設定
$api_host = "example.com";
    
//APIのPathを設定
$api_path = "/API/set";
 
//APIへ接続
$sp = fsockopen('ssl://' . $api_host, 443, $errno, $errstr, 30);
 
//エラーチェック
if(!$sp){
    print $errno . "<br>" . $errstr;
    exit;
}
 
//boundary生成
$boundary = "-----" . md5(uniqid());
 
//header生成
$header  = "POST " . $api_path . " HTTP/1.0\r\n";
$header .= "Host: " . $api_host . "\r\n";
$header .= "Content-type: multipart/form-data, boundary=" . $boundary . "\r\n";
$header .= "Referer: http://" . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . "\r\n";
$header .= "Accept: */*\r\n";
    
//body生成
$body = "";
 
//テキストデータをAPIへ送信できるように変換
foreach ($post_data as $key => $val){
    if((is_numeric($val) || is_string($val)) && $val !== ""){
        $body .= "--" . $boundary . "\r\n";
        $body .= "Content-Disposition: form-data; name=\"" . $key . "\"\r\n";
        $body .= "\r\n" . $val . "\r\n";
        $body .= "--" . $boundary . "\r\n";
    }
}
 
//ファイルデータをAPIに送信できるよう変換
foreach ($post_data_files as $val){
    if($_FILES[$val]['name']){
        $body .= "--" . $boundary . "\r\n";
        $body .= "Content-Disposition: form-data; name=\"" . $val . "\"; filename=\"";
        $body .= $_FILES[$val]['name'] . "\"\r\n";
        $body .= "Content-Type: " . $_FILES[$val]['type'] . "\r\n\r\n";
        $body .= "" . join("", file($_FILES[$val]['tmp_name'])) . "\r\n";
        $body .= "--" . $boundary . "\r\n";
    }
}
 
//送信データ末尾の区切り文字を追加
$body .= "--" . $boundary . "--\r\n";
$body .= "\r\n\r\n";
    
//ヘッダーにデータ部のサイズを追加
$header .= "Content-length: " . strlen($body) . "\r\n\r\n";
 
//データ送信
fputs($sp, $header);
fputs($sp, $body);
 
//データ受信
$buf = "";
$response = fgets($sp);
    
if (substr_count($response, "200 OK") > 0){
    while (!feof($sp)){
        $buf = $buf . fread($sp, 4096);
    }
}else{
    print "データ受信に失敗しました";
    exit;
}
    
//接続終了
fclose($sp);
 
//結果XMLを取得
$result = substr($buf, strpos($buf, "\r\n\r\n")+4);
 
//XMLをパースする
$result_xml = simplexml_load_string($result);
 
//結果を取得し表示
print "status:" . $result_xml->status . "<br>";   //ステータス
print "code:" . $result_xml->code . "<br>";       //コード
print "message:" . $result_xml->message . "<br>"; //メッセージ

PHP版DKIMサンプル

/API/setを使用してDKIM署名付きのメール配信の設定を行うサンプルです。

接続先ホスト名(example.com)および、接続時のIDとパスワード(login_id, password)につきましては適宜ご変更ください。

// APIへ送信するデータ
// $_REQUESTの部分については、可能であれば$_POSTか$_GETを指定してください
// 今回はサンプルの為、汎用性を考えて$_REQUESTとします

// 以下では、DKIMセレクタは $_REQUEST['dkim_selector'] に、DKIMの秘密鍵は $_FILES['dkim_privkey'] に入っている想定としています。

$post_data = array(
    "login_id" => "login@example.com",             //ログインID
    "password" => "password",                      //ログインパスワード
    "subject" => $_REQUEST['subject'],             //メールタイトル
    "body" => $_REQUEST['body'],                   //メール本文
    "from_address" => $_REQUEST['from_address'],   //Fromアドレス
    "from_txt" => $_REQUEST['from_txt'],           //Fromテキスト
    "returnpath" => $_REQUEST['returnpath'],      //メール返信先(エラー時)
    "auto_return" => $_REQUEST['auto_return'],     //自動リターン集計
    "replyto" => $_REQUEST['replyto'],             //メール返信先
    "start_sending" => $_REQUEST['start_sending'], //メール配信開始日時について
    "year" => $_REQUEST['year'],                   //メール配信日(年)
    "month" => $_REQUEST['month'],                     //メール配信日(月)
    "day" => $_REQUEST['day'],                     //メール配信日(日)
    "hour" => $_REQUEST['hour'],                   //メール配信日(時)
    "min" => $_REQUEST['min']                      //メール配信日(分)
    "dkim" => 1,                                   // DKIMを利用する(=1)
    "dkim_selector" => $_REQUEST['dkim_selector'], // DKIMセレクタ
);
    
//送信するファイル名のリスト
$post_data_files = array('file', 'dkim_privkey');
    
//APIのHostを設定
$api_host = "example.com";
    
//APIのPathを設定
$api_path = "/API/set";
 
//APIへ接続
$sp = fsockopen('ssl://' . $api_host, 443, $errno, $errstr, 30);
 
//エラーチェック
if(!$sp){
    print $errno . "<br>" . $errstr;
    exit;
}
 
//boundary生成
$boundary = "-----" . md5(uniqid());
 
//header生成
$header  = "POST " . $api_path . " HTTP/1.0\r\n";
$header .= "Host: " . $api_host . "\r\n";
$header .= "Content-type: multipart/form-data, boundary=" . $boundary . "\r\n";
$header .= "Referer: http://" . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . "\r\n";
$header .= "Accept: */*\r\n";
    
//body生成
$body = "";
 
//テキストデータをAPIへ送信できるように変換
foreach ($post_data as $key => $val){
    if((is_numeric($val) || is_string($val)) && $val !== ""){
        $body .= "--" . $boundary . "\r\n";
        $body .= "Content-Disposition: form-data; name=\"" . $key . "\"\r\n";
        $body .= "\r\n" . $val . "\r\n";
        $body .= "--" . $boundary . "\r\n";
    }
}
 
//ファイルデータをAPIに送信できるよう変換
foreach ($post_data_files as $val){
    if($_FILES[$val]['name']){
        $body .= "--" . $boundary . "\r\n";
        $body .= "Content-Disposition: form-data; name=\"" . $val . "\"; filename=\"";
        $body .= $_FILES[$val]['name'] . "\"\r\n";
        $body .= "Content-Type: " . $_FILES[$val]['type'] . "\r\n\r\n";
        $body .= "" . join("", file($_FILES[$val]['tmp_name'])) . "\r\n";
        $body .= "--" . $boundary . "\r\n";
    }
}
 
//送信データ末尾の区切り文字を追加
$body .= "--" . $boundary . "--\r\n";
$body .= "\r\n\r\n";
    
//ヘッダーにデータ部のサイズを追加
$header .= "Content-length: " . strlen($body) . "\r\n\r\n";
 
//データ送信
fputs($sp, $header);
fputs($sp, $body);
 
//データ受信
$buf = "";
$response = fgets($sp);
    
if (substr_count($response, "200 OK") > 0){
    while (!feof($sp)){
        $buf = $buf . fread($sp, 4096);
    }
}else{
    print "データ受信に失敗しました";
    exit;
}
    
//接続終了
fclose($sp);
 
//結果XMLを取得
$result = substr($buf, strpos($buf, "\r\n\r\n")+4);
 
//XMLをパースする
$result_xml = simplexml_load_string($result);
 
//結果を取得し表示
print "status:" . $result_xml->status . "<br>";   //ステータス
print "code:" . $result_xml->code . "<br>";       //コード
print "message:" . $result_xml->message . "<br>"; //メッセージ