68user's page 掲示板

Prev< No. 4811〜4815> Next  [最新発言に戻る] [過去ログ一覧]
No. 4811 # mac 2007/07/20 (金) 11:02:07
早々のお返事、有難う御座います。
エラーは「認証失敗: 」だったのですが、
ご教授の通りデバッガつけて起動させて見ましたところ

Net::POP3>>> Net::POP3(2.28)
Net::POP3>>> Net::Cmd(2.26)
Net::POP3>>> Exporter(5.58)
Net::POP3>>> IO::Socket::INET(1.29)
Net::POP3>>> IO::Socket(1.29)
Net::POP3>>> IO::Handle(1.25)
Net::POP3=GLOB(0x9e97f44)<<< +OK Qpopper (version 4.0.4) at ******.jp startin g.
Net::POP3=GLOB(0x9e97f44)>>> USER ******
Net::POP3=GLOB(0x9e97f44)<<< +OK Password required for ******.
Net::POP3=GLOB(0x9e97f44)>>> PASS ....
Net::POP3=GLOB(0x9e97f44)<<< +OK ****** has 0 visible messages (0 hidden) in 0 octets.
Net::POP3=GLOB(0x9e97f44)>>> STAT
Net::POP3=GLOB(0x9e97f44)<<< +OK 0 0
認証失敗: at ./pop3-client-Net::POP3.pl line 41.

ということで認証は通っていたようです。mailが空だったということでしょうか。
お騒がせいたしました。line 41というのは多少いじったところもあって
originalとは異なりますが、
$auth_check = $pop->login($username,$password);
など、実質的な変更はしていないつもりでした。
ちなみにtelnet接続でのcapaの応答は
+OK Capability list follows
TOP
USER
LOGIN-DELAY 0
EXPIRE 0
UIDL
RESP-CODES
AUTH-RESP-CODE
X-MANGLE
X-MACRO
X-LOCALTIME Fri, 20 Jul 2007 09:04:45 +0900
IMPLEMENTATION Qpopper-version-4.0.4
となっていました。
これからFTPなどもやってみるつもりですのでまたお世話になるかもしれません。
そのときはまたお願いいたします。

No. 4812 # mac 2007/07/20 (金) 12:19:30
Net::POP3 の検索でみましたら
login ( [ USER [, PASS ]] )
USER、PASSコマンドの両方を送信します。...
メールボックスのなかのメッセージ数を返します。
しかしサーバーにメッセージが何もなければ文字列"0E0"を返します。
これはブール値コンテキストでは trueになりますが、
数値コンテキストでは0です。
指定したユーザがサーバーで認証できなければ、undefが返されます。
-----------------------------------
とあったのですがバグということでしょうか。
Mailが無いことを確認できる方法は有りますでしょうか。
その場合はundefのエラーを回避するというスクリプトを
書けばよいようにも思っています。

No. 4813 # 68user 2007/07/20 (金) 13:03:08
>>4811 mac
pop3-client-Net::POP3.pl の
    if ( $auth_check == undef ){
は誤った書き方で、正しくは
    if ( ! defined $auth_check ){
です (以前は undef かどうかのチェック方法を誤解していたため)。

これだとどうなりますか。

No. 4814 # mac 2007/07/20 (金) 18:33:55
>>4813 68user
> if ( ! defined $auth_check ){
バッチリです。それにしてもすばやいレス、本当に有難う御座います。

No. 4815 # mac 2007/07/20 (金) 20:20:37
たいへん心苦しいのですが別のことをお聞きしてよろしいでしょうか。
HTTPクライアントのスクリプトで、Basic認証が通ったかどうか
戻り値などで判断する方法は有りますでしょうか。
いま確認中のスクリプトは以下の通りです。

#!/usr/local/bin/perl

use strict;
use HTTP::Request::Common;
use LWP::UserAgent;

my $req = POST( 'http://*****.jp/login.html');
$req->authorization_basic('ID', 'Pass');
my $ua = LWP::UserAgent->new;
my $res = $ua->request($req);

Prev< No. 4811〜4815> Next  [最新発言に戻る] [過去ログ一覧]