Вы знакомы с тем, как работает Object Oriented Perl?
Для использования объектно-ориентированного модуля Perl вы должны сначала создать объект этого типа класса. Как правило, это делается с помощью метода new
:
my $smtp = Net::SMTP->new($mailhost);
Теперь $smtp
является объект класса Net::SMTP
. В принципе, это ссылка на глобус, где вы можете хранить свою структуру данных (кто вы отправляете, ваше сообщение и т. Д.). Затем Perl может использовать эту информацию во время вызовов методов (которые являются только подпрограммами, входящими в пакет Net :: SMTP).
Вот пример из программы я написал:
use Net::SMTP;
my $smtp = Net::SMTP->new(
Host => $watch->Smtp_Host,
Debug => $debug_level,
);
if (not defined $smtp) {
croak qq(Unable to connect to mailhost "@{[$watch->Smtp_Host]}");
}
if ($smtp_user) {
$smtp->auth($watch->Smtp_User, $watch->Smtp_Password)
or croak
qq(Unable to connect to mailhost "@{[$watch->Smtp_Host]}")
. qq(as user "@{[$watch->Smtp_User]}");
}
if (not $smtp->mail($watch->Sender)) {
carp qq(Cannot send as user "@{[$watch->Sender]}")
. qq(on mailhost "@{[$watch->Smtp_Host]}");
next;
}
if (not $smtp->to($email)) {
$smtp->reset;
next; #Can't send email to this address. Skip it
}
#
# Prepare Message
#
# In Net::SMTP, the Subject and the To fields are actually part
# of the message with a separate blank line separating the
# actual message from the header.
#
my $message = $watch->Munge_Message($watcher, $email);
my $subject =
$watch->Munge_Message($watcher, $email, $watch->Subject);
$message = "To: $email\n" . "Subject: $subject\n\n" . $message;
$smtp->data;
$smtp->datasend("$message");
$smtp->dataend;
$smtp->quit;
@flo, Там нет необходимости добавлять '** Отредактированный для formatting' к сообщению, вы отредактировали. Однако вы должны сделать что-то еще. Если возможно, исправьте все, что не так с сообщением. – Ben
Пожалуйста, используйте модуль более высокого уровня, например [Email: Sender] (http://search.cpan.org/perldoc?Email::Sender) для отправки электронной почты. [Вот пример] (http://stackoverflow.com/a/10008814/8355) из предыдущего вопроса. – cjm
Также используйте строгий; использовать предупреждения; – Bruce