LoginSignup
12
12

More than 3 years have passed since last update.

Laravelを使いSendGridでメールを送信する

Last updated at Posted at 2020-12-28

SendGridのアカウント登録

アカウント登録時の注意点

SendGridのアカウント登録の窓口はいくつかありますが、今回は公式日本サイトから登録を行います。

ほかの窓口としてはsendgrid.comやMicrosoft Azureから登録ができるようです。

sendgrid.comからアカウント登録を行うと、公式日本サイトからはログインができないようです。
おそらく直接sendgrid.comに登録するものと、日本向けの正規販売代理店(KKE)を介して登録する違いによるものと思われます。

アカウント登録

公式日本サイトにアクセスし、メールアドレスを入力すると仮登録完了メールが届きます。

3.png

「ユーザー情報を登録」ボタンを押すと入力画面が表示されるので、必要事項を入力しましょう。
入力した内容は審査をされるので、適当な内容は書かないようにしてください。

ユーザー情報の登録が完了すると、本登録完了のメールが届きますが、この時点ではまだSendGridにログインはできません。

4.png

半日ほど待つとログイン情報が記載されたメールが届きます。

5.png

ログイン画面>マイページ>SendGridダッシュボードへ をクリックし、ダッシュボード画面が表示されればアカウント登録は成功です。

6.png

送信元メールアドレス登録

SendGridからメールを送信するには送信元メールアドレスを登録する必要があります。
サイドメニューの Marketing>Senders>Create New Sender をクリックして送信元情報を入力して Save をクリックすると、登録内容が一覧として表示されます。

8.png

この時点ではVerified が×になっているため、まだ設定が完了していません。

From Email Addressに入力したメールアドレスにメールが届いているはずなので、メールの Verify Sender Identityをクリックして送信元メールアドレスの確認を行ってください。

画面を更新してVerifiedに✓がついていれば送信元メールアドレスの設定は完了です。

9.png

APIキー作成

続いてAPIキーの作成を行います。
Settings>API Keys>Create API Key をクリックしてAPIキー作成画面を開いてください。

10.png

APIキー名とアクセス権限を設定(今回はFull Access)し、Create&Viewをクリックすると、APIキーの確認画面が表示されます。
APIキーは一度しか表示されないため、忘れないように必ずコピーして保管しておきましょう。

12.png

Doneをクリックすると一覧に作成したAPIキーが表示されます。
これでAPIキーの作成は完了です。

13.png

Laravelの設定

SendGridライブラリインストール

Laravelプロジェクト直下で以下のコマンドを実行します。

composer require "sendgrid/sendgrid"

.envファイル設定

.envファイルの環境変数に作成したAPIキーを追加します

SENDGRID_API_KEY={YOUR API KEY}

メール送信処理

メールを送信するための処理を記述します。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use SendGrid;

class MailingController extends Controller
{
    public function sendMail()
    { 

        $email = new \SendGrid\Mail\Mail();
        $email->setFrom('送信元アドレス');
        $email->setSubject("テスト送信");
        $email->addTo('送信先アドレス');
        $apiKey = getenv('SENDGRID_API_KEY');
        $sendGrid = new \SendGrid($apiKey);
        $email->addContent(
            "text/plain",
            "test mail"
        );
        $response = $sendGrid->send($email);
        if ($response->statusCode() == 202) {
            return back()->with(['success' => "E-mails successfully sent out!!"]);
        }
        return back()->withErrors(json_decode($response->body())->errors);
    }
}

web.php にパスを設定

Route::get('/Mailing','MailingController@sendMail')->name('Mailing');

ブラウザからlocalhost/Mailingを実行すると、addToに設定したアドレス宛にメールが届きました。

無題.png

12
12
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
12
12