1. 首先Gmail 帳號必需要開起雙重驗正 https://www.google.com/landing/2step/
2. 之後到我的帳戶去新增應用程式的密碼 也就是幫網站產生一組密碼
https://myaccount.google.com/u/3/security
https://security.google.com/settings/u/3/security/apppasswords
這邊應用程式的密碼 等一下設定的時候會用到
產生好後的畫面
如果跳過以上app password 直接將email 的密碼填入.env 會出現
Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 wd7sm12843789wjc.36 - gsmtp "
3.到Laravel 專案的 .env 設定 郵件服務 這邊分兩種 看你的網站有沒有ssl
如果沒有就用以下設定 填好 email 還有 app password
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>
MAIL_ENCRYPTION=tls
有用ssl就用以下設定MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>
MAIL_ENCRYPTION=ssl
如果上述沒有設定好 可能會出現
Expected response code 220 but got code “”, with message “” 問題
4. 設定好後 測試寄信服務並 在routes.php中新增以下程式碼 並修改from to 的email
5.並且新增以下 blade 定義郵件的內容 (Mail::send的第一個參數 /emails/welcome.blade.php )
6.最後輸入網址http://yourdomainname/sendemail 出現Your email has been sent successfully 表示成功囉 此時去收信一下就會看到了!
7. 如果沒有填 from 的 那欄 系統會用config/mail.php 中的null 會出現錯誤
Cannot send message without a sender address
此時將mail.php中的from修改成
'from' => ['address' => env('MAIL_FROM', null), 'name' => env('MAIL_NAME', null)],
並到.env設定MAIL_FROM,MAIL_NAME兩個變數即可
沒有留言:
張貼留言