1

MIME::Lite を使用してメールを送信できません。デスクトップから送信すると、以下のエラーが発生します。エラー: 「SMTP がメール サーバーに接続できませんでした: ファイル記述子が正しくありません」

以下のコードを使用しています。

use strict;
use MIME::Lite;
use Net::SMTP;

my $from_address = "no-reply@host.com";
my $to_address = "madhan@host.com";
my $cc_address = "madhan@host.com";
my $subject = "Test mail";
my $message_body = "Madhan test mail";
my $namer="madhankumar";
my $regards="Madhan M";

print " Sending mail from $from_address to $to_address \n";
my $person_name=ucfirst($namer).",";
my $mail_host = 'mail1.somehost.com';


my $msg = MIME::Lite->new (
  From => $from_address,
  To => $to_address,
  Cc => $cc_address,
  Subject => $subject,
  Type =>'multipart/mixed'
) or die "Error creating multipart container: $!\n";

$msg->attach (
  Type => 'TEXT',
  Data => "Dear $person_name\n\n".$message_body."\n\nRegards,\n$regards"
) or die "Error adding the text message part: $!\n";

MIME::Lite->send('smtp', $mail_host, Timeout=>60);
  $msg->send;

上記のコードは、メールサーバーが LAN に接続されている間は正常に動作しています。リモートシステムでコードを使用しているときに、以下に示すようにエラーがスローされました

"SMTP Failed to connect to mail server: Bad file descriptor".

理由を教えてください。コードはリモート システムで実行されますか。そうでない場合、私がコードに加えた変更は何ですか..あなたの解決策を共有してください....

前もって感謝します...

注: Windows XP でこれを開発しています。

4

1 に答える 1

6

変数には、含まれていると思われるものが含まれていません。警告をオンにしていた場合は、自分でこれに気付いたでしょう。

$ perl -e'use warnings; my $from_address = "no-reply@host.com";'
Possible unintended interpolation of @host in string at -e line 1.
Name "main::host" used only once: possible typo at -e line 1.

解決策は、一重引用符を使用してこれらの文字列を区切ることです。

于 2012-04-10T08:42:04.693 に答える