Уникнення випадкового надсилання електронних листів за допомогою alwaysTo()

  • Час читання ~2 хв
  • 2022-09-20 16:57:07
Іноді ми випадково надсилаємо тисячі електронних листів реальним клієнтам із нашого робочого середовища. Є багато способів уникнути цього, але Laravel має гарний, простий метод!

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

Оригінал
avatar

Yurij Finiv

Full stack

ABOUT

I'm full stack laravel developer

I knew my call in programming back in 2006.

WORK EXPERIENCE
CONTACT
Ukraine, Lutsk
+380979856297