Memo

メモ > 技術 > フレームワーク: Laravel > GmailのSMTPでメール送信

■GmailのSMTPでメール送信
GmailのSMTPでメールを送信したときのメモ 専用のアプリパスワードを発行し、それを使ってメールを送信できる 設定手順は Google.txt も参照 [Laravel5]gmailが送信できない? : ラブサファリ http://lovesafari.blog.jp/archives/21272100.html 以下はアプリパスワードについては触れられていないが、プログラムは参考になる Laravelでメール送信機能を実装する方法【Gmailを利用】 https://manablog.org/laravel-send-email/ ■.envの設定 .env で以下のように設定する
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME=Gmailアドレス MAIL_PASSWORD=アプリパスワード MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=送信元アドレス MAIL_FROM_NAME=送信者名
■ファイルの作成 /resources/views/emails/test.blade.php でメールの本文を定義する
<p>$Test={{ $test }}</p>
/app/Http/Controllers/Admin/HomeController.php など適当なコントローラーに送信処理を書く。ファイル冒頭でMailクラスをuseし、コントローラー内に実際の送信処理も書く
use Illuminate\Support\Facades\Mail; $data = [ 'test' => 'テスト' ]; Mail::send('emails.test', $data, function($message){ $message->to('refirio.work@gmail.com') ->subject('ここがタイトルです'); }); exit('OK');
■送信確認 認証エラーが出る場合、Googleで2段階認証とアプリパスワードを設定しているか確認する (通常のログインパスワードとは別にアプリパスワードが必要。アプリパスワードの設定には2段階認証の設定が必要) これでメールが送信されたが、メールのFromが意図したアドレスにならない メールヘッダを確認すると、以下のように X-Google-Original-From に反映されていた
Sender: "山野寛和" <refirio.work@gmail.com> From: refirio@example.com X-Google-Original-From: example@example.com
これはGmailを使う場合の仕様かも php - Laravel Sender or From not working as expected - Stack Overflow https://stackoverflow.com/questions/39362131/laravel-sender-or-from-not-working-as-expected ■メール送信時に「SSL operation failed」のエラーになる SwiftMailerでメールを送信しようとするとSSL operation failed with code 1. エラーが出る - ぃぐわ!まにあっくす http://wigwamania.hatenablog.com/entry/2016/04/09/150000 上記の解説から少しコードが変わったようだが、 vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php このファイルを以下のように修正すると、Gmailでメール送信できるようになった 258: $options = []; + $options['ssl']['verify_peer'] = false; + $options['ssl']['verify_peer_name'] = false; 259: if (!empty($this->params['sourceIp'])) { 260: $options['socket']['bindto'] = $this->params['sourceIp'].':0'; 260: }

Advertisement