1

我正在运行 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 上工作?

非常感谢!

4

0 回答 0