你是否熟悉面向对象Perl的工作原理?
为了使用面向对象的Perl模块,您必须首先创建该类类型的对象。通常情况下,这是通过new
方法来完成:
my $smtp = Net::SMTP->new($mailhost);
现在,$smtp
是Net::SMTP
类的对象。基本上,它是对可以存储数据结构的glob的引用(您要发送给谁,您的消息等)。然后,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