ラボ > PHP:SendGrid

PHP SendGridの基本とWeb API V3のメモ

メルマガとかメールをいっぱい送りたいとき

作成日:2020-10-15, 更新日:2020-10-15

基本

SendGrid
・メルマガとかメールをいっぱい送りたいときにいい感じにやってくれるサービス

使用方法

1.SendGridよりアカウント作成(無料 or 有料)
2.ライブラリ or curlで実行

ライブラリで実行

・PHP version 5.6, 7.0, 7.1, 7.2, 7.3, or 7.4

今回の作業対象のPHPのバージョンが5.4だったので・・・ライブラリを使うってのはダメだった。

curlで実行

細かいことは公式のドキュメントを確認
SendGrid ドキュメント
※内容によっては、APIリファレンスじゃなく、チュートリアルにしか記載がなかったりするので両方を確認する必要アリ

▼メールを送るサンプル

$apiKey    = 〇〇〇〇;
$url       = 'https://api.sendgrid.com/v3/mail/send';
$from_mail = 'hoge@example.com';
$to_mail   = 'foo@example.com';

$req_header = array(
  'Authorization: Bearer ' . $apiKey,
  'Content-Type: application/json',
  'cache-control: no-cache',
);

$req_body = array(
  'personalizations' => array(
    array (
      'to' => array(
        array(
          'email' => $to_mail,
        ),
      ),
    ),
  ),
  'from' => array(
    'email' => $from_mail,
  ),
  'subject' => 'Hello, SendGrid!',
  'content' => array(
    array(
      'type'  => 'text/plain',
      'value' => 'Hi!',
    ),
  ),
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HEADER, false);

// json形式で値をセット
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($req_body));

// 全APIヘッダのセットは必須っぽい
curl_setopt($ch, CURLOPT_HTTPHEADER, $req_header);

$source = curl_exec($ch);
curl_close($ch);