4

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!

編集:

メールキャッチャーが別のポートで実行されていて、25で起動しようとしたときにエラーが発生しなかったことが判明しました。

4

2 に答える 2

3

メールサーバーとポートをメール内のヘッダーに設定しないでください。むしろあなたはそれを%mailcfgハッシュに設定します:

use Mail::Sendmail qw(sendmail %mailcfg)
$mailcfg{port} = 1025; #localhost is already the default server...
于 2012-07-17T17:30:25.710 に答える
1

あなたはこれを試すことができます..それは私のために働いた..

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 });
?>
于 2016-06-15T10:44:15.177 に答える