Laravel 傳送郵件報錯

alalala發表於2019-10-15

場景

使用 163郵箱 實現 Laravel 中新使用者註冊時,郵箱驗證訊息的傳送。

163郵箱 smtp 傳送郵件預設埠資訊

163smtp埠

我這裡是在本地環境,所以埠採用 非SSL協議埠號 25

報錯資訊

Expected response code 250 but got code "553", with message "553 Mail from must equal authorized user "

錯誤原因以及修復

報錯原因:

有些郵件伺服器要求 fromusername 也就是 MAIL_FROM_ADDRESSMAIL_USERNAME 必須一致,163郵箱 就是這樣。

修復

預設的 Laravel.env 檔案關於郵箱傳送的預設配置有

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_authorization_code
MAIL_ENCRYPTION=ssl

然而在 config/mail.php 中關於郵箱的配置還有下面兩項

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
 ],

這裡的 MAIL_FROM_ADDRESS,MAIL_FROM_NAME.env 中並沒有定義。

  • MAIL_FROM_ADDRESS 指的是郵箱地址;
  • MAIL_FROM_NAME 指的是郵件中顯示的發件人名字,可自由定義,如 Pannio

最後應該是這個?

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_authorization_code
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=your_username
MAIL_FROM_NAME=Pannio
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章