類別:後端相關
| 發布於 2025-06-22 15:39
Laravel Mail 驗證連線功能
如何在 Laravel 專案中測試郵件伺服器設定是否正確,可用於部署或開發階段確認 .env 中的郵件設定是否可正常連線。
測試信箱連線狀態
使用 Laravel 內建的 Mail facade 可檢查目前的郵件設定是否可與伺服器建立連線。
程式碼範例
⚠️ 注意事項
- Laravel 9 之後預設 改用 Symfony Mailer,上述方法需依據實際驅動調整。若專案使用
Symfony Mailer,
Mail::getSymfonyTransport() 才是正確用法。
- 上述程式僅適用於 Laravel 8 或更早版本(使用 SwiftMailer)。
Laravel 9+ (Symfony Mailer)
替代方案:
若使用 Laravel 9 以上版本,建議以寄送測試信件來驗證設定是否正確,如下:
建議用途
- CI/CD 部署後的健康檢查機制
- 後台管理介面中的「測試郵件設定」功能
- 排除寄信失敗問題時使用
延伸閱讀
Laravel Mail 驗證連線功能
如何在 Laravel 專案中測試郵件伺服器設定是否正確,可用於部署或開發階段確認
.env中的郵件設定是否可正常連線。測試信箱連線狀態
使用 Laravel 內建的
Mailfacade 可檢查目前的郵件設定是否可與伺服器建立連線。程式碼範例
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Log; use Swift_TransportException; // 僅適用於使用 SwiftMailer 的 Laravel 版本 private function checkMailConnection(): bool { try { Mail::getSwiftMailer()->getTransport()->start(); return true; } catch (Swift_TransportException $e) { Log::error('Mail transport error: ' . $e->getMessage()); return false; } catch (\Exception $e) { Log::error('General mail error: ' . $e->getMessage()); return false; } }⚠️ 注意事項
Mail::getSymfonyTransport()才是正確用法。Laravel 9+ (Symfony Mailer) 替代方案:
若使用 Laravel 9 以上版本,建議以寄送測試信件來驗證設定是否正確,如下:
use Illuminate\Support\Facades\Mail; Mail::raw('This is a test email.', function ($message) { $message->to('[email protected]') ->subject('Test Mail'); });建議用途
延伸閱讀
https://laravel.com/docs/10.x/mail
https://symfony.com/doc/current/mailer.html
https://swiftmailer.symfony.com/