Как проверять если письмо было отправленно?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
ilma55
Сообщения: 65
Зарегистрирован: 2016.07.15, 19:26
Откуда: Молдова
Контактная информация:

Как проверять если письмо было отправленно?

Сообщение ilma55 »

Внедрил новый функционал на сайте.

отправляю пиьсма пользователям так:

Код: Выделить всё

Yii::$app->mailer->compose(['html'=>'html-version-unsubscribe', 'text' => 'text-version'], ['content' => $message])
->setFrom([Yii::$app->params['siteEmailNoreply'] => Yii::$app->params['siteNameNoreply']])
->setTo($mailingUsr->email)
->setSubject($subject)
->send();
на почту стали приходить письма о том, что письмо не было отправленно
Mail delivery failed: returning message to sender

ВОПРОС:
как сделать проверку если email существует? или если письмо отправлено?
что-то в этом роде, чтоб я смог почистить БД от мусора.

типо если FASLE, то я удаляю ид бд этого пользователя.
Аватара пользователя
Sereja3578
Сообщения: 204
Зарегистрирован: 2016.09.21, 11:15
Контактная информация:

Re: Как проверять если письмо было отправленно?

Сообщение Sereja3578 »

Никак вроде. Мэйлер возвращает просто true или false, в случае если письмо ушло или не ушло. А что там с ним дальше сталось это уже не его ума дело. Там могла быть почта переполнена или не тот адресат быть. Я так понимаю у вас через smtp сделано, раз вы отчеты получаете. Как вариант можете только потом парсить отчеты с почты, какой-нибудь консольной командой, и удалять битые email. smtp еще кидает в случае не успешной отправки exception, но это относится к тем случаям, когда у вас допустим забанили ящик за спам.
Аватара пользователя
ilma55
Сообщения: 65
Зарегистрирован: 2016.07.15, 19:26
Откуда: Молдова
Контактная информация:

Re: Как проверять если письмо было отправленно?

Сообщение ilma55 »

получается, что надо просто сделать так???

if (Yii::$app->mailer->compose()->.....->send())
{
// ура!!! письмо отправилось
}
else
{
// удалить email
}
Аватара пользователя
Sereja3578
Сообщения: 204
Зарегистрирован: 2016.09.21, 11:15
Контактная информация:

Re: Как проверять если письмо было отправленно?

Сообщение Sereja3578 »

Ну это только для проверки ушло оно или нет, это не даст гарантии, что оно дошло. А для smtp, вообще надо брать мтеод отправки в
try {
}
и в
catch (Swift_TransportException $e) {

}
ловить exception.
Аватара пользователя
ilma55
Сообщения: 65
Зарегистрирован: 2016.07.15, 19:26
Откуда: Молдова
Контактная информация:

Re: Как проверять если письмо было отправленно?

Сообщение ilma55 »

СПАСИБО! внедрю сейчас и потестим
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: Как проверять если письмо было отправленно?

Сообщение Йож »

Вот тут по ошибкам побольше информации:
https://codedump.io/share/snXrwmXa9SQv/ ... ery-status
==============================
Логично, если Вам приходит ответ на почту, что "Mail delivery failed: returning message to sender", то mailer отправил письмо, то бишь выдал true.
Так что видится только закодить проверяльщика почты с определенным текстом и удалять из базы е-мейлы после повторной проблемы.
--
Кстати, rugabarbo спец в этом. Может быть, прокомментирует.
Аватара пользователя
Sereja3578
Сообщения: 204
Зарегистрирован: 2016.09.21, 11:15
Контактная информация:

Re: Как проверять если письмо было отправленно?

Сообщение Sereja3578 »

ilma55 писал(а): 2017.04.26, 13:37 СПАСИБО! внедрю сейчас и потестим
Не за что, я сам недавно задавал этот вопрос. Вот, тут тема переросла в другие интересные размышления по поводу отправки писем
viewtopic.php?f=19&t=43062
Ответить