Хорошо, я провел последние четыре часа, пытаясь выяснить, почему моя реализация модуля 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
ранее работал?)