From 1dd37c4386d78c1685bbe6cc9cf84147147486ac Mon Sep 17 00:00:00 2001 From: Tajim Date: Wed, 2 Sep 2026 10:53:39 +0600 Subject: [PATCH] feat(mail): add multi-smtp roundrobin configuration --- .env.example | 13 +++++++++++++ config/mail.php | 29 +++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 6b661041..b322f45f 100644 --- a/.env.example +++ b/.env.example @@ -68,6 +68,19 @@ MAIL_PASSWORD=null MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" +# Multi-SMTP / Round-Robin (optional) +# MAIL_ROUNDROBIN_MAILERS="smtp,smtp2,smtp3" +# MAIL2_SCHEME=null +# MAIL2_HOST=127.0.0.1 +# MAIL2_PORT=2525 +# MAIL2_USERNAME=null +# MAIL2_PASSWORD=null +# MAIL3_SCHEME=null +# MAIL3_HOST=127.0.0.1 +# MAIL3_PORT=2525 +# MAIL3_USERNAME=null +# MAIL3_PASSWORD=null + AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=auto diff --git a/config/mail.php b/config/mail.php index e32e88da..2240afd7 100644 --- a/config/mail.php +++ b/config/mail.php @@ -49,6 +49,30 @@ 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)), ], + 'smtp2' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL2_SCHEME'), + 'url' => env('MAIL2_URL'), + 'host' => env('MAIL2_HOST', '127.0.0.1'), + 'port' => env('MAIL2_PORT', 2525), + 'username' => env('MAIL2_USERNAME'), + 'password' => env('MAIL2_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'smtp3' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL3_SCHEME'), + 'url' => env('MAIL3_URL'), + 'host' => env('MAIL3_HOST', '127.0.0.1'), + 'port' => env('MAIL3_PORT', 2525), + 'username' => env('MAIL3_USERNAME'), + 'password' => env('MAIL3_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + 'ses' => [ 'transport' => 'ses', ], @@ -90,10 +114,7 @@ 'roundrobin' => [ 'transport' => 'roundrobin', - 'mailers' => [ - 'ses', - 'postmark', - ], + 'mailers' => explode(',', env('MAIL_ROUNDROBIN_MAILERS', 'smtp,smtp2')), 'retry_after' => 60, ],