Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
#!/usr/local/bin/perl -w
# $Id: pop3-client.pl,v 1.2 2002/02/05 17:53:10 68user Exp $
# POP3サーバ名、ユーザ名、パスワード
$connect_host = 'pop3.foo.bar.com';
$username = 'USERNAME';
$passwd = 'PASSWORD';
use Socket; # Socket モジュールを使う
# プロトコルは POP3 を使う
$port = getservbyname('pop3', 'tcp') || 110;
# ホスト名を、IPアドレスの構造体に変換
$iaddr = inet_aton($connect_host)
|| die "$connect_hostは存在しないホストです。\n";
# port と IP アドレスをまとめて構造体に変換
$sock_addr = pack_sockaddr_in($port, $iaddr);
# ソケット生成
socket(SOCKET, PF_INET, SOCK_STREAM, 0)
|| die "ソケットを生成できません。\n";
connect(SOCKET, $sock_addr)
|| die "$connect_host のポート $port に接続できません。\n";
# ファイルハンドルSOCKETをバッファリングしない
select(SOCKET); $|=1; select(STDOUT);
# POP3サーバにユーザ名とパスワードを送る
print SOCKET "USER $username\r\n";
print SOCKET "PASS $passwd\r\n";
# メールの一覧を取得
print SOCKET "LIST\r\n";
while (){
# 「.」のみの行が送られてきたらループを抜ける
m/^\.\r\n$/ && last;
# 「メール番号 バイト数」という行なら
if ( m/^(\d+) (\d+)\r\n$/ ){
$num=$1;
$size=$2;
# メール番号を @mails に push
push(@mails, $num);
}
}
# 各メールについて
foreach ( @mails ){
# メールの内容を送信するようリクエストを送る
print SOCKET "RETR $_\r\n";
while (){
# 「.」のみの行が送られてきたらメールの終り。
m/^\.\r\n$/ && last;
print $_;
}
}
# サーバとの接続を切る
print SOCKET "QUIT\r\n";