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
W Laravel istnieje (jak na razie) nieudokumentowany sposób zapobiegania wysyłaniu e-maili na stary adres.
Dlaczego to jest przydatne? Cóż, niektórzy z nas nie są idealni 😅. Czasami przypadkowo wysyłamy tysiące e-maili do prawdziwych klientów z naszego środowiska postojowego lub nawet w naszych testach.
Istnieje wiele sposobów na uniknięcie tego, ale Laravel ma fajną, łatwą metodę. z pudełka!
# 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]');
}
}
}
Co się dzieje z alwaysTo?
Przydatna metoda alwaysTo()
zastąpi-wszystkie adresy dodane w to
, cc
i bcc
w ramach wiadomość e-mail.
Odbywa się to w klasie Illuminate\Mail\Mailer
(patrz tutaj). Zwróć uwagę na komentarz do kodu:
// 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);
}
Więc w powyższym kodzie mówimy Laravelowi, aby wysyłał e-maile na adres [email protected]
tylko wtedy, gdy NIE znajdujemy się w środowisku produkcyjnym!