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]
, лише якщо ми НЕ у робочому середовищі!