SendGridのCampaigns API活用ガイド:作成から送信スケジュールまで
2023.04.19
error この記事は最終更新日から1年以上が経過しています。
キャンペーンの作成
参考: APIリファレンス
$sender_id = '11111';
$suppression_group_id = '22222';
$plain_content = 'メール本文';
$list_ids = array(0,1); // 送信リストID(複数指定可)
$data = array(
'title' => 'タイトル',
'subject' => '件名',
'sender_id' => $sender_id ,
'plain_content' => $plain_content."\n\n\n[unsubscribe]",
'html_content' => "<html><head><title></title></head><body><p>{$plain_content}</p>>br>>br>>p>>a href=\"[unsubscribe]\">unsubscribe>/a>>/p>>/body>>/html>",
'list_ids' => $list_ids,
'suppression_group_id' => $suppression_group_id,
);
$json_data = json_encode($data);
$api_url = "https://api.sendgrid.com/v3/campaigns";
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.SENDGRID_API_KEY
);
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code < 200 || $status_code >= 300){
print "API error ==createCampaign {$status_code}==";
return FALSE;
}
$result = json_decode($response);
if(isset($result->errors[0])){
print "API error ==createCampaign {$result->errors[0]->message}==";
return FALSE;
}
if(!isset($result->id) || $result->id == ''){
print "API error ==createCampaign CampaignId Not Found==";
return FALSE;
}
return $result->id;
上記の処理は、作成したキャンペーンのIDを返す。
本文内に
キャンペーンの閲覧
参考: APIリファレンス
$campaign_id = '11111';
$api_url = "https://api.sendgrid.com/v3/campaigns/{$campaign_id}";
$opts = array('http' =>
array(
'header' => "Authorization: Bearer ".SENDGRID_API_KEY
)
);
$context = stream_context_create($opts);
$result = @file_get_contents($api_url, false, $context);
$http_code = 0;
preg_match('/HTTP\/1\.[0|1|x] ([0-9]{3})/', $http_response_header[0], $matches);
$http_code = $matches[1];
if(!$result || $http_code != '200'){
print "API error ==viewCampaign==";
return FALSE;
}
$result_arr = json_decode($result);
$mail_status = $result_arr->status;
return $mail_status;
上記の処理は、指定したキャンペーンのステータスを返す。
キャンペーンの更新
参考: APIリファレンス
$sender_id = '11111';
$suppression_group_id = '22222';
$plain_content = 'メール本文';
$list_ids = array(0,1); // 送信リストID(複数指定可)
$data = array(
'title' => 'タイトル',
'subject' => '件名',
'sender_id' => $sender_id ,
'plain_content' => $plain_content."\n\n\n[unsubscribe]",
'html_content' => "<html><head><title></title></head><body><p>{$plain_content}</p>>br>>br>>p>>a href=\"[unsubscribe]\">unsubscribe>/a>>/p>>/body>>/html>",
'list_ids' => $list_ids,
'suppression_group_id' => $suppression_group_id,
);
$json_data = json_encode($data);
$api_url = "https://api.sendgrid.com/v3/campaigns/{$row['campaign_id']}";
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.SENDGRID_API_KEY
);
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code < 200 || $status_code >= 300){
print "API error ==updateCampaign {$status_code}==";
return FALSE;
}
$result = json_decode($response);
if(isset($result->errors[0])){
print "API error ==updateCampaign {$result->errors[0]->message}==";
return FALSE;
}
if(!isset($result->id) || $result->id == ''){
print "API error ==updateCampaign CampaignId Not Found==";
return FALSE;
}
return $result->id;
上記の処理は、更新したキャンペーンのIDを返す。
キャンペーンのスケジュール設定
参考: APIリファレンス
$send_at = '1489771528'; // 送信したい時刻をUNIX TIMEで
$campaign_id = '11111';
$data = array(
'send_at' => $send_at,
);
$json_data = json_encode($data);
$api_url = "https://api.sendgrid.com/v3/campaigns/{$campaign_id}/schedules";
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.SENDGRID_API_KEY
);
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code < 200 || $status_code >= 300){
print "API error ==scheduleCampaign {$status_code}==";
return FALSE;
}
$result = json_decode($response);
if(isset($result->errors[0])){
print "API error ==scheduleCampaign {$result->errors[0]->message}==";
return FALSE;
}
if(!isset($result->status) || $result->status != 'Scheduled'){
print "API error ==scheduleCampaign Status Error==";
return FALSE;
}
return $result;
キャンペーンのスケジュールを更新
参考: APIリファレンス
$send_at = '1489771528'; // 送信したい時刻をUNIX TIMEで
$campaign_id = '11111';
$data = array(
'send_at' => $send_at,
);
$json_data = json_encode($data);
$api_url = "https://api.sendgrid.com/v3/campaigns/{$campaign_id}/schedules";
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.SENDGRID_API_KEY
);
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code < 200 || $status_code >= 300){
print "API error ==updateScheduleCampaign {$status_code}==";
print $response;
return FALSE;
}
return TRUE;
キャンペーンのスケジュールをキャンセル
参考: APIリファレンス
$campaign_id = '11111';
$api_url = "https://api.sendgrid.com/v3/campaigns/{$campaign_id}/schedules";
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.SENDGRID_API_KEY
);
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status_code < 200 || $status_code >= 300){
print "API error ==unscheduleCampaign {$status_code}==";
return FALSE;
}
return TRUE;
その他キャンペーン関連のAPIは、Campaigns APIリファレンスに載ってる。
SendGrid APIでPHPからUnsubscribe Groupsを取得する
2023.04.21
SendGridのUnsubscribe Groupsは、受信者が配信停止できるメールタイプを管理する機能です。この記事では、APIを使って全グループの情報を取得する方法を解説します。
PHP SendGrid API
SendGrid APIで送信者情報を取得する方法
2023.04.20
SendGridのAPIを使って、全送信者情報を簡単に取得する方法を紹介します。
PHP SendGrid API
SendGrid APIでPHPからリストを操作する方法
2023.04.19
PHPからSendGridのリスト管理を行なう方法を解説します。リストの作成、特定リストの検索、メールアドレスの登録といった基本的な操作を、具体的なコード例を交えて説明します。
PHP SendGrid API
SendGrid APIを使ったRecipientの操作方法
2023.04.19
SendGridでは、Recipientという概念を使ってメールアドレスを管理します。この記事では、Recipientを追加する方法と削除する方法を、APIのコードサンプルを用いて具体的に説明します。
PHP SendGrid API