我正在运行 Mac OS X 10.8.2 和 Perl 5.12.4(它附带的版本)。
我通过 CPAN 安装了 Net::SMTP::SSL('sudo cpan',然后是 'install Net::SMTP::SSL')
每当我尝试使用 perl 模块时,都会收到如下错误:
perl(41125) malloc: *** error for object 0x7fff8929d50d: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
我试图尽可能简化这一点以缩小错误范围。在下面的代码中,它会在尝试运行该$smtp->auth
行时崩溃(就在“即将崩溃”行之后)。
#!/usr/bin/perl
use Net::SMTP::SSL;
$mailhost = 'foo.bar.com';
$sender = 'baz@foo.bar.com';
$sender_acct = 'baz';
$sender_name = 'Foo Bar';
$sender_password = 'password';
$subject = 'Auto notice';
$userEmail = 'user@foo.bar.com';
$thisMessage = "Hello from Foo Bar\n";
our $smtp = new Net::SMTP::SSL(
$mailhost,
Port => 465,
#Debug => 1,
#Hello => 'foo.bar.com',
#Timeout => 10
) or die "Could not set up SMTP $!\n$smtp->message";
print "About to crash\n";
# -- Authorize ourselves with the SMTP server --
$smtp->auth($sender_acct, $sender_password);
# -- Enter sender mail address. --
$smtp->mail($sender);
# -- Enter recipient mails address. --
@success = $smtp->recipient($userEmail, { SkipBad => 1 });
$smtp->data();
# -- This part creates the SMTP headers you see. --
$smtp->datasend("To: <$userEmail> \n");
$smtp->datasend("From: $sender_name <$sender> \n");
$smtp->datasend("Subject: $subject");
# -- line break to separate headers from message body. --
$smtp->datasend("\n");
$smtp->datasend($thisMessage);
$smtp->datasend("\n");
$smtp->dataend();
$smtp->quit();
我非常有信心这不是我的脚本中的错误,因为当我在另一个平台上运行它时它工作正常(我很确定它是 Solaris,但我不能发誓。它安装了 perl 5.8.8) .
那么,我在这里做错了什么?如何Net::SMTP::SSL
在我的 Mac 上工作?
非常感谢!