こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MIME::Lite ActivePerlでエラー

MIME::Lite ActivePerlでエラー

Linuxで動いたメール送信プログラムをActivePerlで動かしたところ下記のエラーになりました。

SMTP Failed to connect to mail server: Bad file descriptor

該当行はMIME::Liteでメールを送信する部分でした。

return($message->send);

Windows(Activeperl)上で動かす場合なにか特別な設定が必要なのでしょうか?

以下、プログラムの抜粋です。

use Jcode;
use MIME::Lite;

# 値の設定

sub testmail{

$subject = jcode($subject)->mime_encode();
$data = jcode($data)->jis;

$message = MIME::Lite->new(
From => $mailfrom,
To => $mailto,
Subject => $subject,
Type => 'multipart/related'
);
$message->attach(
Type => 'text/html; charser="iso-2022-jp"',
Data => $data
);
foreach(@cid){
$message->attach(
Type => 'image/gif',
Id => $_,
Path => "./$_"
);
}
return($message->send);
}

投稿日時 - 2010-02-06 10:04:33

QNo.5653119

困ってます

質問者が選んだベストアンサー

MIME::Lite は Linux 上では sendmail コマンドを使って
メールを送信しますが、Windows 上では smtp によりメール
送信サーバにメールを投げます。

なので、$message->send する前に使用するメール送信サーバを
MIME::List->send('smtp', $host, AuthUser=>$user, AuthPass=>$pass);
で教える必要があります。

$host には、メール送信サーバのホスト名または IP アドレスを指定します。
AuthUser, AuthPass は、メール送信サーバが発信者認証を要求する場合に
ユーザ名とパスワードを指定します。

投稿日時 - 2010-02-06 17:15:43

補足

ありがとうございます!デフォルトはsendmailを使ってたのでユーザもパスワードも不要だったんですね!

SMTPサーバを指定するということで気づいたのですが、
利用しようとしているサーバのSMTPはメール投稿にPort587を使っています。
ポートを指定するにはどうすれば良いでしょう?

追加の質問で申し訳ありません。ご回答お待ちしております。

投稿日時 - 2010-02-06 17:52:54

お礼

質問のあと自分で調べてみました。

$message->send('smtp',$SMTPserver,'AuthUser'=>$SMTPuser,'AuthUser'=>$SMTPpass,'Port'=>587)

とすることでActivePerlからメール送信できました!

ありがとうございました!!

投稿日時 - 2010-02-06 18:13:44

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問