7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでSendGridを使ったメール送信サンプル

Posted at

Webアプリに組み込んで何かをトリガーにして送信…ではなく、例えば何らかのサービスの生存をチェックして、落ちてるときにはメール発報、みたいな使い方をイメージしてます。ちょっと前までだったら、普通に mail() で送ればいいじゃないという話なんだけど昨今の事情を鑑みるとクラウドサーバからメール送信できないとか普通にあるっぽいので。

なお、結論から言うとめちゃくちゃ簡単&便利。今回は書いてないけど、SendGrid側でどれだけ開封されてるか、とかが確認できるのもナイス。

#準備

事前に https://app.sendgrid.com/settings/api_keys でAPIキーを作成しておく。
作成後に表示されるAPIキーは一度しか表示されないのでこれを大事にとっておいて、以下の内容で.envファイルを作成し、APIキーを記述しておく。

.env
export SENDGRID_API_KEY='hogehogefugafuga'

このファイルを読み込むため、下記コマンドを実行。

source .env

念の為、ちゃんと読み込めてるか確認する。

echo $SENDGRID_API_KEY
hogehogefugafuga

\(^o^)/

#インストール

sendgridのパッケージをインストール。

composer のインストールは https://getcomposer.org/download/ こちらから。

composer require sendgrid/sendgrid

#PHP側作業
githubにあるサンプルをベースにちょこちょこ修正する。下記は修正前。test.phpという名前で作ってみる。

test.php
<?php
require 'vendor/autoload.php'; // If you're using Composer (recommended)
$email = new \SendGrid\Mail\Mail();
$email->setFrom("test@example.com", "Example User");
$email->setSubject("Sending with SendGrid is Fun");
$email->addTo("test@example.com", "Example User");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
    "text/html", "<strong>and easy to do anywhere, even with PHP</strong>"
);
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
    $response = $sendgrid->send($email);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
}

でもって動作確認。

php test.php

すげー。これだけでメール送れる!めっちゃ簡単!!!

cronとかで回すときは、

10 * * * * source path/to/.env ; php test.php

のようにして環境変数を使うのが良さそう。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?