1.前提条件
本記事では、フォームの作成やメール送信処理の実装部分については解説していません。
フォームの作成方法については以下の記事を参考下さい。
メール送信処理の実装部分については以下の記事を参考下さい。
実装処理の説明部分は、laravelを利用した想定で記載しています。
他の言語での使い方はメール送信チュートリアル【まとめ】やSendGridのブログ記事を見てみるとよいかと思います。
2.SendGridへの新規会員登録
SendGridを利用するには、まず会員登録をして審査にパスする必要があります。
会員登録とAPI Keyの取得に分けて解説していきます。
2.1会員登録
SendGridサイトにアクセスして、「無料ではじめる」から新規会員登録ページを開きます。
メールが入力したメールアドレス宛に届くので、メールを開きます。
メール内の「ユーザー情報を登録」をクリック。
個人情報を入力。
(パスワードは、ログインに必要になるため忘れないように)
利用目的を適宜選択。
利用用途の詳細は審査があるため、適切に記入。
(利用目的で検証用を選択している場合、上記のような文面で審査は通るかと思います)
適宜入力したら「登録する」をクリック。
登録完了までいったら、一旦は登録作業は完了です。
メールが来るまで約1日ほど待ちます。
(平日に新規登録した際、翌日に利用可能になったメール通知が届きました)
2.2 API keyの取得
「SendGridにようこそ!」といったメールが届いたら、ユーザ名とパスワードでSendGridにログインします。
「xxxxx@kke.com」のようなユーザ名をメール内で確認ができます。
パスワードは新規登録時に設定したパスワードです。
SendGridにログインしたら、API Keyを作成します。
SettingsからAPI Keysを探します。
「Create API Key」をクリック。
API Key Nameを入力して、「Create & View」をクリック。
API Key が作成できたら、値を失くさないように保管しておきましょう。
2.3 APIキーの設定
API Keyをコピーしたら、.env(環境設定ファイル)に値を張り付けます。
こちらのSMTPの設定を参考に、以下のように設定します。
MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=[API Key]
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=test-laravel8@test.com
MAIL_USERNAMEには「apikey」でOKです。
MAIL_PASSWORDにコピーしたAPI Keyを張り付けます。
MAIL_FROM_ADDRESSにはメールを受信したときに表示されるメールアドレスです。
送信先が自分(管理者)宛の場合は、以下のように記載できます。
Mail::to(env('MAIL_TO')) ->send(new ContactMail($contact));
Mail::toで送信先を指定し、sendにてMailableクラスを使用しています。(Laravel利用)
詳細はこちらの記事を参考下さい。
.env側は以下のように設定
MAIL_TO=[your email address]
3.テスト確認
フォームに値を入力して「送信」。
フォーム側で送信処理が完了したら、SendGridにログインしてdashboardを表示します。
メールがうまく送信されていれば、日付ごとに処理状況が表示されるようになります。左のメニューにあるStatsのOverviewやGlobal Statsでも確認できます。
dashboardまたはStatsで何も表示されていない場合は、.env(環境設定)が反映されていない可能性があるため、キャッシュのクリア等を行います。
php artisan cache:clear
php artisan config:clear
またport番号が587でうまくいかない場合、2525に変えて試してみましょう。
送信先に指定したメールアドレス宛にメールが届いているかメーラーを確認。
フォームに入力した内容で、メール受信できていることが確認できます。
メールのタイトル:処理側で設定したsubject。
Laravel:.envで指定しているAPP_NAMEの値
test-laravel8@test.com:.envで指定しているMAIL_FROM_ADDRESSの値
sendgrid.net 経由を消したい場合は、SendGridのSender Authenticationの設定をする必要があります。(また独自ドメインが必要です)
Githubにサンプルコードを公開していますので、メール送信処理を参考に頂ければと思います。ルーティングは/contact で問い合わせフォームを表示するようにしています。
関連コード
app/Http/Requests/ContactRequest.php
app/Models/Contact.php
app/Mail/ContactMail.php
resources/views/contact.blade.php
resources/views/emails/contact.blade.php
routes/web.php