PHP
Heroku
SendGrid

Heroku環境でSendGridを使ってメール送信

はじめに

※2017/08/20時点
Heroku環境からはデフォルトだとメール送信ができないため、
SendGridアドオンを入れてメールを送信する流れを記載します。(言語:PHP)
基本的には、↓公式サイトに手順が記載されているので、それに沿って行っていきます。
https://devcenter.heroku.com/articles/sendgrid
以下がざっくりした流れ+備忘録です。

流れ

  1. SendGridアドオンを追加する
  2. SendGridのサイトに行って、APIキーを作成する
    • ※ 環境変数にSendGridのID,パスワードが書き込まれるが、Herokuサイトの自分のAppの"SendGrid"をクリックすればシングルサインオンできる。
  3. 作成したSendGridのAPIキーを自分のAppの環境変数に追加する
    • ※ ブラウザからなら、自分のAppのSettings>Config Variablesから追加ができる。
  4. ComposerでSendGridのライブラリを取得
  5. autoload.phpでライブラリを読み込み、環境変数から取得したAPIキーを渡してメールを送信
<?php
require 'vendor/autoload.php';

$from = new SendGrid\Email(null, "test@example.com");
$subject = "Hello World from the SendGrid PHP Library!";
$to = new SendGrid\Email(null, "test@example.com");
$content = new SendGrid\Content("text/plain", "Hello, Email!");
$mail = new SendGrid\Mail($from, $subject, $to, $content);

$apiKey = getenv('SENDGRID_API_KEY');
$sg = new \SendGrid($apiKey);

$response = $sg->client->mail()->send()->post($mail);
echo $response->statusCode();
echo $response->headers();
echo $response->body();