hello foo bar Saba note | GmailでSMTPサーバーを使う

GmailでSMTPサーバーを使う

2019.9.29 (日)

GmailのSMTPサーバーの使い方が変更になったこととG-Suiteなどの有料サービスがだんだん浸透してきたのもあって情報がかなり錯綜している感じ。GmailのSMTPサーバー使えますが、2段階認証が設けられてSMTPサーバーはGoogleのアプリの一部として認証するという仕組みになった模様です。

2段階認証の設定

ランディングページからの設定はこちらからできるようです。Google アカウントの セキュリティを強化
アカウントから設定する場合は、該当のアカウントでGmailにログインします。
右上の自分のアイコンをクリックすると「Googleアカウントを管理」というボタンが現れるので、それを押下。



ようこそ画面に遷移します。



左メニューのセキュリティーをクリックすると2段階認証の項目が見つかります。
(この項目が見つからない場合は、管理者によってサービスが停止されていることがあります。G-suiteの場合など。)



2段階認証の項目がオフになっている場合は2段階認証の設定を行います。該当の項目をクリックして設定にすすみます。「アカウントを 2 段階認証プロセスで保護する」というタイトルページから開始ボタンを押して進みます。アカウントのログインを行います。「2 つ目の認証要素としてスマートフォンを使用」というページに移動するので、問題なければスマートフォンを使って認証を行います。(その他の方法でも認証は可能ですが、ここでは割愛します。)スマートフォンに認証情報を送信されます。スマートフォン側でGmailアプリを開き該当のアカウントでログインします。自動的に認証の画面が現れるので「はい」をタップします。認証が終わるとPC側の画面が遷移し、電話番号の確認画面に移ります。コードの取得方法の登録画面では、送信方法にテキストを選択します。電話番号に送信された番号をPCに入力すれば完了です。最後に2段階認証が完了した画面が表示されればOKです。
2段階認証がオンになっていることを確認します。さらにアプリパスワードがなしになっている場合は、アプリパスワードを設定します。



アプリパスワードの項目をクリックし進みます。認証画面が出るので該当のアカウントでログインします。アプリパスワードの設定画面が現れます。



アプリ選択とデバイス選択という項目がありますが、これは便宜的なものでパスワード生成とは関係ないようです。通常スマホやPCのメーラーで使うことを前提に作成されているので、このような項目になっているのだと思います。LinuxサーバーからSMTPを利用しようとする開発者は「その他の名称」を選んで適当な名前をつけておくのがよいかと思います。(そのときはアプリとデバイスという項目がなくなって、名称のみの登録になります。)
16桁のパスワードが生成されるので、保存しておきます。このタイミングでしか表示されないので紛失しないようにしましょう。
これを通常のアカウントのパスワードなどと区別してアプリパスワードと呼びます。


SMTPサーバーの設定

例えばhoge@gmail.comの場合は以下のようになります。

driver host port username password encryption from address from name
smtp smtp.gmail.com 465 hoge@gmail.com アプリ パスワード ssl hoge@gmail.com hoge@gmail.com

SMTPサーバーにはsmtp.gmail.comを記入します。
ポートには587か465を指定しますが、587を指定する場合は「STARTTLSを使用する」チェックをONに、465を指定する場合は「SSLを使用する」チェックをONにする必要があります。

ポート 暗号化 内容
587 TLS STARTTLSを使用する
465 SSL SSLを使用する

Laravelなどで設定する場合は以下のようになります。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=hoge@gmail.com
MAIL_PASSWORD=APP_PASSWORD
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=hoge@gmail.com
MAIL_FROM_NAME=hoge@gmail.com