2016-12-30 2 views
0

Я использую Laravel 5.3 и драйвер SES для отправки своих писем. Я настроил свою базу данных и маршруты так, чтобы всякий раз, когда я отправляю электронное письмо, которое возвращается как отскок, я получаю уведомление и добавляю это письмо в таблицу «недействительных сообщений электронной почты».Laravel: отправьте письма только в том случае, если адрес электронной почты не включен в список отказов

Теперь мне нужно настроить приложение, чтобы оно отправляло только электронное письмо, если адрес электронной почты НЕ находится в этой таблице отказов. Это чек, который будет сделан для каждого отдельного письма, отправленного этим приложением, без каких-либо исключений.

Есть ли простой способ сделать эту проверку в драйвере электронной почты, или мне нужно изменить все вызовы на фасад почты и проверить это перед отправкой электронной почты?

ответ

1

Я предлагаю создать собственный класс Mailable, который наследует от \Illuminate\Mail\Mailable.

Существует метод там называется buildRecipients(), который выглядит следующим образом:

/** 
* Add all of the recipients to the message. 
* 
* @param \Illuminate\Mail\Message $message 
* @return $this 
*/ 
protected function buildRecipients($message) 
{ 
    foreach (['to', 'cc', 'bcc', 'replyTo'] as $type) { 
     foreach ($this->{$type} as $recipient) { 
      $message->{$type}($recipient['address'], $recipient['name']); 
     } 
    } 

    return $this; 
} 

Вы можете подключить, чтобы (переопределение) и добавим некоторую логику только добавить получателя, если он не находится на «заблокирован» список.

Смежные вопросы