Just got schooled in a Laravel feature I was unaware of:
— Chris Fidao (@fideloper) January 20, 2022
Tell Laravel to always send to a specific address! pic.twitter.com/sJJouTCzPn
В Laravel есть (пока) недокументированный способ предотвратить отправку писем на любой старый адрес.
Почему это полезно? Ну, некоторые из нас не идеальны 😅. Иногда мы случайно отправляем тысячи электронных писем реальным клиентам из нашей промежуточной среды или даже в наших тестах.
Есть много способов избежать этого, но у Laravel есть хороший и простой способ из коробки!
# File app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
// Stuff omitted
public function boot()
{
f (! app()->environment('production')) {
Mail::alwaysTo('[email protected]');
}
}
}
Что происходит с alwaysTo?
Удобный метод alwaysTo()
перекрывает-все адреса, добавленные в to
, cc
и bcc
внутри сообщение электронной почты.
Это делается в классе Illuminate\Mail\Mailer
(см. здесь). Обратите внимание на комментарий к коду:
// If a global "to" address has been set, we will set that address on the mail
// message. This is primarily useful during local development in which each
// message should be delivered into a single mail address for inspection.
if (isset($this->to['address'])) {
$this->setGlobalToAndRemoveCcAndBcc($message);
}
Итак, в приведенном выше коде мы указываем Laravel отправлять электронные письма на адрес [email protected]
, только если мы НЕ в производственной среде!