mail: Net::SMTP::SSL=GLOB(0x9599850) not found RCPT TO: error (550 5.1.1 ... User unknown).
2
2
接続にユーザー+ ssl認証を必要とするSMTPメールサーバーを使用しています。 メールサーバーに接続してメールを送信するためのperlモジュールを探していますが、有用なものは見つかりませんでした。
perlモジュールまたはperlコードの提案は本当にありがたいです。
SendmailおよびNet :: SMTP :: SSLを使用して、sendmailサーバーに接続してメールを送信しようとしました。 以下にサンプルコードを示しますが、エラーユーザーは不明です。
エラー:
mail: Net::SMTP::SSL=GLOB(0x9599850) not found RCPT TO: error (550 5.1.1 ... User unknown).
コード:
#!/usr/bin/perl use strict; use warnings; use Mail::Sendmail; use Net::SMTP::SSL; my %mail = ( From=> '[email protected]', To=> '[email protected]', # Cc will appear in the header. (Bcc will not) Subject => 'Test message', 'X-Mailer' => "Mail::Sendmail version $Mail::Sendmail::VERSION", ); $mail{Smtp} = Net::SMTP::SSL->new("mail.server.com", Port=> 465, Debug=>1); $mail{auth} = {user=>'username', password=>"password", required=>1 }; $mail{'X-custom'} = 'My custom additionnal header'; $mail{Message} = "The message key looks terrible, but works."; # cheat on the date: $mail{Date} = Mail::Sendmail::time_to_date( time() - 86400 ); if (sendmail %mail) { print "Mail sent OK.\n" } else { print "Error sending mail: $Mail::Sendmail::error \n" } print "\n\$Mail::Sendmail::log says:\n", $Mail::Sendmail::log;
5 Answer
2
この行のデータを確認したと仮定します。
$mail{auth} = {user=>'username', password=>"password", required=>1 };
mail.server.comで知られているパスワード「password」を持つユーザー「username」(実際のコード「[email protected]」ですか?)ですか?
そうでない場合、「ユーザー不明」エラーが発生します。
'' '' '
EDIT1 *そのメールに「To」がなく、「cc」のみがあり、メールサーバーがそれを気に入らないかもしれない(私は気にしなかったので、:-)か、コードをトリミングしますか?
'' '' '
EDIT2 *行を置き換えることでエラーを再現できました
$mail{Smtp} = Net::SMTP::SSL->new("mail.server.com", Port=> 465);
with
$mail{Smtp} = Net::SMTP::SSL->new("smtp.mail.com", Port=> 465);
メール送信者にメッセージを送信するための有効なアドレスを与える必要があります! 既存の宛先アドレス( `Cc ⇒ 'user2 @ server.com'`行.. 出来た!
0
SMTP :: SSLでSSL認証を介して接続し、Net :: SMTP :: Multipartで添付ファイルをサポートして、それらを連携させることができます。
0
SMTP :: SSL`で、これは標準の` Net :: SMTP`のドロップイン置換として自身を説明しています。 それは非常に関連性が高いと思われます。それはあなたが望むことをしますか?
0
表示されるエラーは、認証エラーではなくRCPT TOエラーです。 これは、実際に存在しないユーザーにメールを送信しようとしたか、認証なしでサーバーを中継しようとしたためです。
SendmailがSMTP Authメソッド(http://metacpan.org/pod/Mail::Sendmail#LIMITATIONS)をサポートしていないように思われる場合は、ほとんどの場合認証も試行されていません。
SMTP:SSLのauthメソッドを使用する必要があります。
$mail{Smtp}->auth('username','password');
0
ComcastはSSMTPに移行したため、自動メッセージを変更する必要がありました。
以下に、Comcastメールサーバーの動作するPERLコードを示します。 あなたがそれが役に立つことを願っています。
#!/usr/bin/perl use Net::SMTP::SSL; use MIME::Base64; $uptime = `uptime`; $smtp = Net::SMTP::SSL->new ( "smtp.comcast.net", Hello => myhost.comcast.net, Port => 465, Timeout => 30, Debug => 0, ); $smtp->datasend ("AUTH LOGIN\n"); $smtp->response(); # Mailbox info $smtp->datasend (encode_base64('myuserid')); #username $smtp->response(); $smtp->datasend (encode_base64('mypassword')); # password $smtp->response(); # Email from $smtp->mail ('[email protected]'); # Email to $smtp->to ('[email protected]'); $smtp->data(); $smtp->datasend("To: [email protected]\n"); $smtp->datasend("From: myuserid\@comcast.net\n"); $smtp->datasend("Subject: My Subject Line"); # Line break to separate headers from body $smtp->datasend("\n"); $smtp->datasend("Uptime Report - At $uptime\n"); $smtp->dataend(); $smtp->quit(); exit;