ラベル Mail の投稿を表示しています。 すべての投稿を表示
ラベル Mail の投稿を表示しています。 すべての投稿を表示

2018年3月10日土曜日

PHP のシステムから SendGrid を使ってみました。

メール送信機能を追加する機会があったのですが、サーバに何も設定されておらず、Dev や Staging など複数台のサーバに作業するのは面倒だなぁと。。
じゃぁ SendGrid を使って見ようということでやってみたら、驚くべき楽さで出来たという話です。。
  1. API KEY を取得する
  2. composer で library を install
  3. サンプルのママでメールが届く
正味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

これだけで(躓きもなく)動きました。素敵ですね。
料金体系もやたら優しいので、わざわざメールの設定するぐらいならこっちのがいいやと感じました。
回し者ではありませんよ(笑
それでは。