うまくいかないのは変数をわたすとき
$mail = new Net::SMTP::TLS('smtp.hoge.bar', Port => 587, User => 'user', Password => 'password');
って感じだとうまくいく。
# まぁ当然であるが・・・
んでそれを
%smtp_set;
# %smtp_setに値を突っ込む作業
$smtp_host = $smtp_set{'smtp_host'};
$smtp_port = $smtp_set{'smtp_port'};
$smtp_usr = $smtp_set{'smtp_usr'};
$smtp_passwd = $smtp_set{'smtp_passwd'};
$mail = new Net::SMTP::TLS($smtp_host, Port => $smtp_port, User => $smtp_usr, Password => $smtp_passwd);
とかにするとエラーを吐く
'onnect failed :IO::Socket::INET: Bad hostname 'smtp.hoge.bar
ただ単に変数参照ができないのか?!
と思うんだけど
$mail = new Net::SMTP::TLS('smtp.hoge.bar', Port => 587, User => $smtp_usr, Password => $smtp_passwd);
こういうのはOKだったりする。
まぁ引数次第なのか?と思うんだけど・・・
エントリ書き込み時点での最新の
Net::SMTP::TLS, IO::Socket::INETを使ってるんだが、
Host, Portでエラーが出てた。
なんとか変数で突っ込めないかなぁ。
# じゃないと作ってるSMTPで送信するプログラムで
# HostとPortが設定ファイルで指定ができないなぁ...
原因がわかった・・・。
どうもハッシュが悪いくさい。
SMTPの設定ファイルは別にしているのだが、
ハッシュを使わず直接
$smtp_host = 'smtp.hoge.bar';
とかするとうまくいった。
なんかゴミでも入ってるのかなぁ。
printした感じだとそうでもないのだが・・・。
それにそれだとなんで$smtp_usr, $smtp_passwdはOKなのか。
という疑問が残りそうなんだけど...。
よくわかりませんね。
0 件のコメント:
コメントを投稿