|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serge Chervjakov 2:5020/400 03 Mar 2007 23:47:07 To : Anton Gorlov Subject : Net::SMTP -------------------------------------------------------------------------------- Sat Mar 03 2007 14:46, Anton Gorlov wrote to Serge Chervjakov: SC>> message(), в котором предварительно вызвать метод предка. Вариант 3 - SC>> разобраться как производится очистка из message() и сделать свой метод SC>> dataend(). AG> Я так и не разобрася где и как очищается message. message обьявлена в AG> net::Cmd думаю не очищается вот из за чего.. Мы вызываем к пример mail. Он в свою очередь - _MAIL. А этот тянет за собой вызов сначала command(), который делает собственно отправку команды на сервер. В command() же идет очистка message'в (${*$cmd}{'net_cmd_resp'} = []; и ${*$cmd}{'net_cmd_code'} = "000"; их подчищают). Теперь обратим внимание, что все команды SMTP серверу, кроме тех, что идут после data и до "CRLF.CRLF" посылаются с использованием Net::Cmd::command(). Она за собой подчищает messages. Между data и CRLF.CRLF идут datasend'ы, которым.. ну скажем так - позволительно сразу после отсылки messages не подчищать (ибо они знают, что считывать не будут). Считывание осуществляется методов Net::Cmd::response(). Там мы видим, что именно он заполняет необходимые для message() поля объекта Net::SMTP. И делает это через push. Т.е. все старые ошибки сохраняются. Hо dataend() перед вызовом response (а в отличии от остальных команд, response тут делается сразу же в dataend()) данные об ошибках не подчищает. Откуда ясно, что править можно: response - делать чтобы он не запоминал предыдущие ошибки.. плохой вариант правки, ибо думаю оно не зря так задумано, именно складировать их. Либо в dataend перед $cmd->response() == CMD_OK; сделать: ${*$cmd}{'net_cmd_resp'} = []; # the response ${*$cmd}{'net_cmd_code'} = "000"; # Made this one up :-) Только я бы не рисковал такие правки самому делать:) Думаю авторы сиих чудесных творений знают лучше что и где править:). --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16679e89bd25e.html, оценка из 5, голосов 10
|