The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"возвращать в скрипт Message-ID"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"возвращать в скрипт Message-ID"  +/
Сообщение от Аркадий (??) on 15-Фев-12, 17:17 
Добрый день.
В перле я новичок, прошу отнестись с пониманием.
Суть вопроса.
Пытаюсь сделать простой скрипт для отправки писем через MIME::Lite::TT::HTM. Всё получается, кроме одного: мне нужно вернуть получить Message-ID только что отправленного письма (т.е. который отдается в 250 OK id=1RxeMw-0003AV-3A после завершения команды "data" знаком ".") для того что бы проапдейтить ним БД и потом снимать разную статистику. Собственно тут-то и проблема, не знаю как это сделать. Пытался так
my $r = $msg->send;
print $r, "\n";
но получаю в ответе только "1".
Подскажите пожалуйста способ?
Спасибо.
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "возвращать в скрипт Message-ID"  +/
Сообщение от PavelR (ok) on 15-Фев-12, 18:32 
Смотрим 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:

Ставить какие-то там галочки - "хочу получать ответы только от зареганых" - чревато тем, что кому-то стоящему будет невозможно вам ответить.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "возвращать в скрипт Message-ID"  +/
Сообщение от Аркадий13 (ok) on 15-Фев-12, 19:16 
Благодарю за ответ.

> А вообще, по теме, я так думаю что код из ответа 250
> OK id=1RxeMw-0003AV-3A вам особо и не нужен. Если _действительно_ нужен -
> ну значит ковыряйте исходники и делайте собственные реализации. ИМХО, другого пути
> и нет.

Может быть вы правы, что не нужен, давайте я просто объясню чего хочу.
Мне нужно, что бы и скрипт и МТА могли по каждому письму делать запросы в БД (письма хранятся в Мускуле) и по этим выборкам строить разную логику (типа отслеживать баунсы, снимать статистику и т.д.). Соответственно для этого нужен некий идентификатор, по которому и скрипт и мейлер смогут каждое письмо однозначно идентифицировать.  
Способ, который я для себя сейчас вижу, это рисовать некий X-Message-ID: непосредственно в скрипте и дальше выкусывать его значение из хидера при обработке, что вобщем-то работоспособно, но сильно похоже на костыль. К тому же, его ещё и нужно выпиливать мейлером непосредственно перед отправкой, что бы не поиметь проблем с некоторыми особо-хитрыми контент-фильтрами.
Я плохо знаю перл, но по всему видно, что такой способ не оптимальный.
Можете ли подсказать, как сделать такое "правильно"?

> ------------------------
> PS:
> Ставить какие-то там галочки - "хочу получать ответы только от зареганых" -
> чревато тем, что кому-то стоящему будет невозможно вам ответить.

Вроде бы я ничего такого не ставил. О чем речь, я что-то пропустил?


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "возвращать в скрипт Message-ID"  +/
Сообщение от PavelR (??) on 15-Фев-12, 20:46 

>> ------------------------
>> PS:
>> Ставить какие-то там галочки - "хочу получать ответы только от зареганых" -
>> чревато тем, что кому-то стоящему будет невозможно вам ответить.
> Вроде бы я ничего такого не ставил. О чем речь, я что-то
> пропустил?

Я не знаю, я преимущественно пользуюсь сайтом как незарегистрированный пользователь.


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "возвращать в скрипт Message-ID"  +/
Сообщение от PavelR (??) on 15-Фев-12, 20:54 
> Может быть вы правы, что не нужен, давайте я просто объясню чего
> хочу.
> Мне нужно, что бы и скрипт и МТА могли по каждому письму
> делать запросы в БД (письма хранятся в Мускуле) и по этим
> выборкам строить разную логику (типа отслеживать баунсы, снимать статистику и т.д.).
> Соответственно для этого нужен некий идентификатор, по которому и скрипт и
> мейлер смогут каждое письмо однозначно идентифицировать.

Ответ от мейлера - этот не подходящий идентификатор. Ответ от мейлера - это всего лишь идентификатор, с которым письмо поставлено в очередь.
В случае postfix+amavis, к примеру, письмо, проходя через фильтр амавис-а, возвращается снова в постфикс, и получает там новый идентификатор, поскольку добавляется в очередь _снова_. То же самое происходит по приходу писем на каждый новый почтовик.


> Способ, который я для себя сейчас вижу, это рисовать некий X-Message-ID: непосредственно
> в скрипте и дальше выкусывать его значение из хидера при обработке,
> что вобщем-то работоспособно, но сильно похоже на костыль.

Да, именно так и надо делать.

> К тому же, его ещё и нужно выпиливать мейлером непосредственно перед отправкой, что бы
> не поиметь проблем с некоторыми особо-хитрыми контент-фильтрами.

Есть стандартный заголовок, его и следует использовать. Выкусывать ничего не надо.
Именно этот заголовок и должен возвращаться в баунсах.
Какой это заголовок я прямо сейчас сказать не возьмусь, онлайн с лайвсиди, тут ни одного электронного письма нету чтобы посмотреть..

> Можете ли подсказать, как сделать такое "правильно"?

Статистику вы сможете просто смотреть по таблице отправок.
X-Message-ID вам потребуется для отслеживания недоставок, да. По факту недоставки должно будет обновиться поле в БД, и собственно всё.
Других применений X-Message-Id я пока не вижу, но вам ваша задача виднее, поэтому корректируйте.


PS: Где-то "далеко" ) есть какие-то куски реализации отслеживания баунсов при осуществлении
рассылки. Писано на перле, но, думаю, что писано криво, и можно использовать только схему, а не код. Я уточню в этом коде, есть там проверка X-Message-Id или только адрес получателя (неполучившего письмо) проверяется.


Проверяется легко - отправляете письмо на несуществующий адрес, смотрите что вам придет в отлупе (в исходном тексте письма, с заголовками).

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру