【问题标题】:Perl Mail::Sendmail cant connect to SMTP serverPerl Mail::Sendmail 无法连接到 SMTP 服务器
【发布时间】:2012-07-17 17:27:53
【问题描述】:

我正在尝试从 perl 脚本发送电子邮件,但连接到我的 SMTP 服务器时遇到了问题。我正在使用 MailCatcher-https://github.com/sj26/mailcatcher/-使用它的默认设置 (localhost:1025) 运行。

MailCatcher 正在运行,我可以使用其他服务向它发送邮件。关于什么可能是错误的任何线索? (也尝试使用 Net::SMTP 发送邮件,但连接失败)

print "Testing Mail::Sendmail version $Mail::Sendmail::VERSION\n";

my %mail = (
  To      => 'temp@test.com',
  From    => 'test@test.com',     
  Subject => 'Test message'
);

$mail{server} = 'localhost:1025';

$mail{'mESSaGE : '} = "The message key looks terrible, but works.";

print Dumper(%mail);

if (sendmail %mail) { print "Mail sent OK.\n" }
else { print "Error sending mail: $Mail::Sendmail::error \n" }

输出

Testing Mail::Sendmail version 0.79
Default server: localhost
Default sender: 
$VAR1 = 'Subject';
$VAR2 = 'Test message';
$VAR3 = 'server';
$VAR4 = 'localhost:1025';
$VAR5 = 'To';
$VAR6 = 'temp@test.com';
$VAR7 = 'message : ';
$VAR8 = 'The message key looks terrible, but works.';
$VAR9 = 'From';
$VAR10 = 'test@test.com';
Error sending mail: connect to localhost failed (Connection refused)
connect to localhost failed
connect to localhost failed (Connection refused)
connect to localhost failed
connect to localhost failed (Connection refused) no (more) retries!

编辑:

原来 mailcatcher 正在另一个端口上运行,当我尝试在 25 上启动它时没有给出错误。

【问题讨论】:

  • MailCatcher 默认在 1025 上运行 SMTP 服务器

标签: perl smtp sendmail


【解决方案1】:

您没有在电子邮件的标题中设置邮件服务器和端口;而是将其设置在 %mailcfg 哈希中:

use Mail::Sendmail qw(sendmail %mailcfg)
$mailcfg{port} = 1025; #localhost is already the default server...

【讨论】:

    【解决方案2】:

    你可以试试这个..它对我有用..

    use strict;
    use warnings;
    use Email::Sender::Simple qw(sendmail); 
    use Email::Sender::Transport::SMTP(); 
    use Email::Simple();   
    use Email::Simple::Creator();       
    
    my $smtpserver = 'server';
    my $smtpport = 25;      
    my $smtpuser = 'User_Name';   
    my $smtppassword = 'pass';         
    my $transport = Email::Sender::Transport::SMTP->new({   
        host => $smtpserver,  
        port => $smtpport,            
        sasl_username => $smtpuser,       
        sasl_password => $smtppassword,   
    });            
    
    my $email = Email::Simple->create(header => [
            To      => 'me@example.com',
            From    => 'sender@example.com',
            Subject => 'Hello there!',
        ],  body => "This is one actually worked !!\n",             
    );             
    
    sendmail($email, { transport => $transport });
    ?>
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2015-06-13
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多