Net::SMTP
, по-видимому, имеет довольно слабую обработку ошибок.Лучшее, что вы можете сделать:
my $smtp = Net::SMTP->new($ServerName)
or die "Unable to connect to SMTP server '$ServerName'";
Даже передача Debug => 1
, похоже, ничего не делает, когда не может создать объект.
Не было нового выпуска libnet(в том числе Net :: SMTP) в течение трех лет.Существует версия для разработчиков от мая 2010 года, которая, похоже, имеет некоторые улучшения: это документы :
On failure undef will be returned and $@ will contain the reason for the failure.
(самые последниеправильный выпуск этого не делает.)
Если вы хотите попробовать установить выпуск для разработчика, вы можете улучшить свой код до:
my $smtp = Net::SMTP->new($ServerName)
or die "Unable to connect to SMTP server '$ServerName': $@";
Возможные причины сбоя подключения:
- $ ServerName не является допустимым именем хоста
- Нет службы SMTP, работающей на $ ServerName
- Серверу не нравится стандартное приветствие,
localhost.localdomain
.Передайте Hello => 'your.fully.qualified.host.name'
в конструктор.
Вы можете попробовать подключиться к SMTP-серверу в командной строке на хосте, на котором вы пытаетесь запустить этот скрипт:
$ telnet smtp.example.com
EHLO localhost.localdomain
quit