メール送信予約(一斉メール配信)
サンプルプログラム PHP
<?php
// 接続先URLのドメイン(●の部分)
// https://●●●●●/■■■■■/api/index.php?ac=CreateNewMail
// ^^^^^^^^^^
$domain = '★★★★★★';
// 接続先URLのログインURL(■の部分)
// https://●●●●●/■■■■■/api/index.php?ac=CreateNewMail
// ^^^^^^^^^^
$login_url = '★★★★★★';
// パスワード(API連携接続用パスワード)
$transport_passwd = '★★★★★★';
// CSVファイル ※直接テキスト情報を送信します。
$sendAddress = "メールアドレス,お名前,性別\r\n";
$sendAddress .= "test-0001@example.com,テスト太郎,男\r\n";
$sendAddress .= "test-0002@example.com,テスト花子,女\r\n";
$sendAddress .= "test-0003@example.com,テスト一郎,男\r\n";
// FROMアドレス
$from_address = "★★★★★★";
$from_name = '★★★★★★';
// 件名
$subject = '★★★★★★';
// 本文(テキストパート)
$text_part = '★★★★★★';
// 本文(HTMLパート)
$html_part = '★★★★★★';
// 予約種別
$schedule_type = '★';
// CSVファイルの文字コード(1:UTF-8、2:Shift-JIS、3:EUC-JP のいずれかを指定してください。)
$charset = '★';
// リスト名
$list_name = '★★★★★★';
// 添付ファイル01
$attach_file_01 = '★★★★★★';
// レポートメールの送信(0:送信しない、1:送信する、2:エラー時のみ送信 のいずれかを指定してください。)
$report_option = '★';
$errno = 0;
$errstr = 0;
$postDataArray = array();
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"transport_password\"\r\n\r\n" . $transport_passwd . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"charset\"\r\n\r\n" . $charset . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"list_name\"\r\n\r\n" . $list_name . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"from_address\"\r\n\r\n" . $from_address . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"from_name\"\r\n\r\n" . $from_name . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"subject\"\r\n\r\n" . $subject . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"text_part\"\r\n\r\n" . $text_part . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"html_part\"\r\n\r\n" . $html_part . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"schedule_type\"\r\n\r\n" . $schedule_type . "\r\n";
$postDataArray[] = "---attached\r\n";
$postDataArray[] = "Content-Disposition: form-data; name=\"report_option\"\r\n\r\n" . $report_option . "\r\n";
$postDataArray[] = "---attached\r\n";
// ----------------------------------------------------------------
// CSVファイル(配信リスト)
// ----------------------------------------------------------------
if($sendAddress != "") {
$postDataArray[] = "Content-Disposition: form-data; name=\"csvfile\"; filename=\"".$csvfile."\"\r\n";
$postDataArray[] = "Content-Type: application/octet-stream\r\n\r\n";
// テキストデータを直接読み込みます。
$postDataArray[] = $sendAddress;
$postDataArray[] = "\r\n";
$postDataArray[] = "---attached\r\n";
}
// ----------------------------------------------------------------
// 添付ファイルがある時使用してください。
// ----------------------------------------------------------------
if(file_exists($attach_file_01)) {
$postDataArray[] = "Content-Disposition: form-data; name=\"attach_file_01\"; filename=\"".$attach_file_01."\"\r\n";
$postDataArray[] = "Content-Type: application/octet-stream\r\n\r\n";
$postDataArray[] = array($attach_file_01, filesize($attach_file_01));
// ----------------------------------------------------------------
// ★☆最後の項目は、---attachedの後に'--'を必ず付けてください☆★
// ----------------------------------------------------------------
$postDataArray[] = "---attached--\r\n";
}
$length = 0;
foreach($postDataArray as $data) {
$length += is_array($data) ? $data[1] : strlen($data);
}
$request = "POST /" . $login_url . "/api/index.php?ac=CreateNewMail HTTP/1.1\r\n";
$request .= "Host: " . $domain . "\r\n";
$headers = array(
"Content-Type: multipart/form-data; boundary=-attached",
"Connection: close",
"Content-Length: " . $length
);
$request .= implode("\r\n", $headers) . "\r\n\r\n";
$fp = fsockopen('ssl://' . $domain, 443, $errno, $errstr, 10);
if (!$fp) {
die("接続に失敗しました。\n");
}
fputs($fp, mb_convert_encoding($request, 'SJIS', 'UTF-8'));
foreach($postDataArray as $data){
// 添付ファイルが存在する場合、ファイルデータを送信します
if(is_array($data)){
$fpCsv = fopen($data[0], 'r');
while(!feof($fpCsv)) {
fputs($fp, fread($fpCsv, 8192));
}
fclose($fpCsv);
fputs($fp, "\r\n");
unset($fpCsv);
// 普段はこちらで送信
}else{
fputs($fp, $data);
}
}
$httpheader = ""; // HTTPヘッダー
$response = ""; // レスポンスデータ
// HTTPヘッダの取得
while (!feof($fp)) {
$tmpResponse = fgets($fp, 4096);
if (preg_match('/^(\r|\n)+$/x', $tmpResponse)) {
break;
}
$httpheader .= $tmpResponse;
}
// 結果の取得
while (!feof($fp)) {
$response .= fgets($fp, 4096);
}
fclose($fp);
switch ($charset) {
case 1:
$charsetStr = 'UTF-8';
break;
case 2:
$charsetStr = 'Shift-JIS';
break;
case 3:
$charsetStr = 'EUC-JP';
break;
}
// レスポンスが文字化けする場合は、ご利用の環境にあわせて文字エンコーディングを変換してください。
echo mb_convert_encoding($response, 'SJIS', $charsetStr) . "\n";
ob_flush();
?>