Perl Net :: SMTP - Как использовать - PullRequest
1 голос
/ 02 ноября 2011

Хорошо, я провел последние четыре часа, пытаясь выяснить, почему моя реализация модуля Net :: SMTP больше не работает.

Короче говоря, я делал это (удаляя вещи для проверки ошибок для ясности):

 my $smtp = Net::SMTP->new(Host => $host);
 $smtp->send($from);
 $smtp->data;
 $smtp->datasend($message);
 $smtp->dataend;
 $smtp->quit;

Раньше это работало, но теперь я получаю:

Net::SMTP=GLOB(0x7f9893114798)>>> SEND FROM:<from@address.com>
Net::SMTP=GLOB(0x7f9893114798)<<< 450 Unable to send to "<from@address.com" at this time

Это было из моего send метода.

Perldoc не слишком помог, потому что команды send, send_and_mail, send_or_mail и mail все описаны вместе, и я предположил, что они в значительной степени являются псевдонимами друг друга.

Я посмотрел другие примеры и решил попробовать $smtp->mail, а не $smtp->send Это сработало.

Итак, чем отличаются методы send, mail, send_and_mail и send_or_mail ?. Я должен попробовать каждый? Я знаю, что они соответствуют командам MAIL, SEND, SOML и SAML в SMTP, но я действительно не могу найти ничего, что скажет мне, в чем различия. И разные SMTP-серверы используют разные команды. (Может быть, поэтому метод send ранее работал?)

Ответы [ 2 ]

3 голосов
/ 02 ноября 2011

В документах Net :: SMTP указано, что вы должны быть знакомы с протоколом SMTP.Это в настоящее время указано RFC5321 . В Приложении F.6 к RFC5321 обсуждается устаревшая команда SEND.(Предполагалось, что он доставит сообщение непосредственно в терминал, но это редко применяется. Некоторые серверы могут интерпретировать его как синоним MAIL.)

Короткая версия заключается в том, что вы должны использовать команду MAIL,Или, что еще лучше, модуль более высокого уровня, такой как Email :: Sender .

2 голосов
/ 02 ноября 2011

С RFC 5321, приложение F.6 :

"В дополнение к указанию механизма доставки сообщений почтовые ящики пользователя, RFC 821 предоставил дополнительные, необязательные команды для доставлять сообщения прямо на экран терминала пользователя. Эти Команды (SEND, SAML, SOML) применялись редко, а изменения в технология рабочей станции и внедрение других протоколов может сделали их устаревшими даже там, где они реализованы.

"Клиенты НЕ ДОЛЖНЫ предоставлять SEND, SAML или SOML в качестве сервисов. Серверы МОГУТ их реализовать. Если они реализованы серверами, НЕОБХОДИМО использовать модель реализации, указанную в RFC 821, и Имена команд ДОЛЖНЫ быть опубликованы в ответе на команду EHLO. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...