メール送信機能を追加する機会があったのですが、サーバに何も設定されておらず、Dev や Staging など複数台のサーバに作業するのは面倒だなぁと。。
じゃぁ SendGrid を使って見ようということでやってみたら、驚くべき楽さで出来たという話です。。
- API KEY を取得する
- composer で library を install
- サンプルのママでメールが届く
正味30分もかかららず終わりました。。
サーバをアレアレ弄ってるとあっという間に1時間くらいたつので、ダンチです。
API 経由であれば、送信に失敗したときのエラーもしっかり返してくれるので、mail() や mb_send_mail() よりも優しい。。
API KEY を取得する
早速やった内容ですが、
API KEY は SendGrid の管理画面で取得します。
KEY 毎に細かく権限を設定できるようです。
【Create & View】を押下すると Key が表示されます。
こんな感じ。
1回きりしか表示されません。【Done】を押下するとその後は「*****」とマスクされた状態でしか見れません。忘れたら削除するのみ。
composer で library を install
GitHub repository の README にあるように、composer が使えるので composer.json に以下の記述をして、composer install するだけ。
{
"require": {
"sendgrid/sendgrid": "~6.0"
}
}
https://github.com/sendgrid/sendgrid-php
サンプルのママでメールが届く
これも同 README にあるように書いて、API KEY と to のメアドだけ書き換えれるだけ。
// If you are using Composer (recommended)
require 'vendor/autoload.php';
// If you are not using Composer
// require("path/to/sendgrid-php/sendgrid-php.php");
$from = new SendGrid\Email("Example User", "test@example.com");
$subject = "Sending with SendGrid is Fun";
$to = new SendGrid\Email("Example User", "test@example.com");
$content = new SendGrid\Content("text/plain", "and easy to do anywhere, even with PHP");
$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();
print_r($response->headers());
echo $response->body();
https://github.com/sendgrid/sendgrid-php
これだけで(躓きもなく)動きました。素敵ですね。
料金体系もやたら優しいので、わざわざメールの設定するぐらいならこっちのがいいやと感じました。