Добрый день.
В перле я новичок, прошу отнестись с пониманием.
Суть вопроса.
Пытаюсь сделать простой скрипт для отправки писем через MIME::Lite::TT::HTM. Всё получается, кроме одного: мне нужно вернуть получить Message-ID только что отправленного письма (т.е. который отдается в 250 OK id=1RxeMw-0003AV-3A после завершения команды "data" знаком ".") для того что бы проапдейтить ним БД и потом снимать разную статистику. Собственно тут-то и проблема, не знаю как это сделать. Пытался так
my $r = $msg->send;
print $r, "\n";
но получаю в ответе только "1".
Подскажите пожалуйста способ?
Спасибо.
Смотрим MIME::Lite, perl5/MIME/Lite.pmТам есть функция send_by_smtp.
Вам нужно реализовать собственно аналогичную ей, забирая нужные ответы из Net::SMTP, точнее из его наследованного класса MIME::Lite::SMTP.
Нужные данные хранятся в классе Net::SMTP унаследованно от класса Net::Cmd. См. функцию response, там есть строка кода
push(@{${*$cmd}{'net_cmd_resp'}}, $str);
короче, надо прилично ковырнуть =)-----------
А вообще, по теме, я так думаю что код из ответа 250 OK id=1RxeMw-0003AV-3A вам особо и не нужен. Если _действительно_ нужен - ну значит ковыряйте исходники и делайте собственные реализации. ИМХО, другого пути и нет.
------------------------
PS:Ставить какие-то там галочки - "хочу получать ответы только от зареганых" - чревато тем, что кому-то стоящему будет невозможно вам ответить.
Благодарю за ответ.> А вообще, по теме, я так думаю что код из ответа 250
> OK id=1RxeMw-0003AV-3A вам особо и не нужен. Если _действительно_ нужен -
> ну значит ковыряйте исходники и делайте собственные реализации. ИМХО, другого пути
> и нет.Может быть вы правы, что не нужен, давайте я просто объясню чего хочу.
Мне нужно, что бы и скрипт и МТА могли по каждому письму делать запросы в БД (письма хранятся в Мускуле) и по этим выборкам строить разную логику (типа отслеживать баунсы, снимать статистику и т.д.). Соответственно для этого нужен некий идентификатор, по которому и скрипт и мейлер смогут каждое письмо однозначно идентифицировать.
Способ, который я для себя сейчас вижу, это рисовать некий X-Message-ID: непосредственно в скрипте и дальше выкусывать его значение из хидера при обработке, что вобщем-то работоспособно, но сильно похоже на костыль. К тому же, его ещё и нужно выпиливать мейлером непосредственно перед отправкой, что бы не поиметь проблем с некоторыми особо-хитрыми контент-фильтрами.
Я плохо знаю перл, но по всему видно, что такой способ не оптимальный.
Можете ли подсказать, как сделать такое "правильно"?> ------------------------
> PS:
> Ставить какие-то там галочки - "хочу получать ответы только от зареганых" -
> чревато тем, что кому-то стоящему будет невозможно вам ответить.Вроде бы я ничего такого не ставил. О чем речь, я что-то пропустил?
>> ------------------------
>> PS:
>> Ставить какие-то там галочки - "хочу получать ответы только от зареганых" -
>> чревато тем, что кому-то стоящему будет невозможно вам ответить.
> Вроде бы я ничего такого не ставил. О чем речь, я что-то
> пропустил?Я не знаю, я преимущественно пользуюсь сайтом как незарегистрированный пользователь.
> Может быть вы правы, что не нужен, давайте я просто объясню чего
> хочу.
> Мне нужно, что бы и скрипт и МТА могли по каждому письму
> делать запросы в БД (письма хранятся в Мускуле) и по этим
> выборкам строить разную логику (типа отслеживать баунсы, снимать статистику и т.д.).
> Соответственно для этого нужен некий идентификатор, по которому и скрипт и
> мейлер смогут каждое письмо однозначно идентифицировать.Ответ от мейлера - этот не подходящий идентификатор. Ответ от мейлера - это всего лишь идентификатор, с которым письмо поставлено в очередь.
В случае postfix+amavis, к примеру, письмо, проходя через фильтр амавис-а, возвращается снова в постфикс, и получает там новый идентификатор, поскольку добавляется в очередь _снова_. То же самое происходит по приходу писем на каждый новый почтовик.
> Способ, который я для себя сейчас вижу, это рисовать некий X-Message-ID: непосредственно
> в скрипте и дальше выкусывать его значение из хидера при обработке,
> что вобщем-то работоспособно, но сильно похоже на костыль.Да, именно так и надо делать.
> К тому же, его ещё и нужно выпиливать мейлером непосредственно перед отправкой, что бы
> не поиметь проблем с некоторыми особо-хитрыми контент-фильтрами.Есть стандартный заголовок, его и следует использовать. Выкусывать ничего не надо.
Именно этот заголовок и должен возвращаться в баунсах.
Какой это заголовок я прямо сейчас сказать не возьмусь, онлайн с лайвсиди, тут ни одного электронного письма нету чтобы посмотреть..> Можете ли подсказать, как сделать такое "правильно"?
Статистику вы сможете просто смотреть по таблице отправок.
X-Message-ID вам потребуется для отслеживания недоставок, да. По факту недоставки должно будет обновиться поле в БД, и собственно всё.
Других применений X-Message-Id я пока не вижу, но вам ваша задача виднее, поэтому корректируйте.
PS: Где-то "далеко" ) есть какие-то куски реализации отслеживания баунсов при осуществлении
рассылки. Писано на перле, но, думаю, что писано криво, и можно использовать только схему, а не код. Я уточню в этом коде, есть там проверка X-Message-Id или только адрес получателя (неполучившего письмо) проверяется.
Проверяется легко - отправляете письмо на несуществующий адрес, смотрите что вам придет в отлупе (в исходном тексте письма, с заголовками).