День добрый!
Столкнулся с задачей.
При работе с маркетплейсами и их заказами в качестве аккаунта используются специально созданные аккаунты покупателей под них. Соответственно в качестве адреса электронной почты указаны адреса типа кодовое_имя@домен.сайта . Соответственно в почту сыпятся в большом количестве сообшения о недоставленных письмах на эти адреса.
Стал копать, где отключить отправку писем на такие адреса. В итоге дошел до
/app/Tygh/Mailer/Mailer.php
в методе send класса есть код
$body = $message->getBody();
$from = $message->getFrom();
$to = $message->getTo();
if (empty($body) || empty($from) || empty($to)) {
return false;
}
/**
* Allows to change the message before sending it.
*
* @param Mailer $this Instance of mailer
* @param ITransport $transport Instance of transport for send mail
* @param Message $message Instance of message
* @param string $area Current working area (A-admin|C-customer)
* @param string $lang_code Language code
*/
fn_set_hook('mailer_send_pre', $this, $transport, $message, $area, $lang_code);
$result = $transport->sendMessage($message);
как я понимаю через хук mailer_send_pre я никак не смогу предотвратить отправку
пока справляюсь тем, что после
$body = $message->getBody();
$from = $message->getFrom();
$to = $message->getTo();
вставил проверку прямо в файл, если $to соответствует моим условиям, то return false
если бы хук был сразу за этими строками, то можно было бы обнулить $to и тогда в следующем условии произошел бы выход. Но нет.
Возможно, кому-нибудь известен более адекватный способ прервать отправку писем в подобных случаях и более адекватным способом?