В моем приложении Laravel 7.5 я отправляю электронное письмо всякий раз, когда создается запись (запускается через события модели). Электронные письма отправляются с использованием драйвера mailgun
на производстве.
Однако существует функция импорта, и при использовании импорта я не хочу отправлять тысячи писем. Каков наилучший способ приостановить или отключить Laravel электронную почту во время выполнения только для выполнения текущего запроса / сценария?
Я пробовал несколько вещей.
- Настройка драйвера почты на
log
или array
config(['mail.driver' => 'log'])
Работал нормально на локальном / dev (с помощью драйвера smtp), но на производстве не останавливал электронную почту.
- Прослушивание
MessageSending
события и возвращение false
, чтобы предотвратить электронную почту. Опять же, он работал нормально на локальном компьютере, используя драйвер smtp
, но не останавливал электронную почту на производстве, используя драйвер mailgun
.
В настоящее время я звоню Mail::fake()
, чтобы поменять фасад Почты с фальшивкой. Кажется, работает нормально, но чувствует себя очень хакерским и потенциально не будет работать с другими драйверами и / или сообщениями в очереди.
Есть ли лучший, более чистый способ временной и глобальной приостановки отправки электронной почты? Я не хотел бы останавливать отправку событий, так как они выполняют другую обработку, кроме электронной почты.
Спасибо!