• Время чтения ~1 мин
  • 20.09.2022

В 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], только если мы НЕ в производственной среде!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297