• 締切済み

空メール登録処理(Mail::POP3Client)

メールマガジン登録用に、hoge@hoge.comへ空メールを送信してもらい、Mail::POP3Clientで取得したヘッダーから送信元メールアドレスだけを抽出、.txtに書き出すモノを作っているのですが、メールサーバーへメールを取りに行った際に、サーバーにある全てのメールを取得している状態です。 登録を削除しても、毎回毎回全てのメールを取得して書き出し、上書きしてしまうので、メールサーバーからは新着メールのみ取得したいのですが、どのような処理をすればいいのでしょうか? お時間ありましたら教えてくださいませ! #!/usr/bin/perl use Mail::POP3Client; $host = 'popサーバー'; $uname = 'ユーザー名'; $passwd = 'hogehoge'; $pop = new Mail::POP3Client (HOST => $host); $pop->User($uname); $pop->Pass($passwd); $pop->Connect(); open OUT,"> ./hoge.txt"; for($i=1;$i <= $pop->Count();$i++){ foreach($pop->HeadAndBody($i)){ if(/^From: .*<(.+)>.*/){ $mail_from = $1; } elsif (/^From: (.+)/) { $mail_from = $1; } } print OUT $mail_from, "\n"; } close OUT; $pop->Close(); #重複削除 (ここに重複削除処理) #成功したら登録完了の文字を表示 print "Content-type: text/html\n\n"; print <<"EOM"; <html> <body> 登\録\完\了\! </body></html> EOM exit;

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

POP3ではサーバーは未読/既読の管理をしていないので、 自分で何番まで読み出したかを記録しておく必要があります。 つか読んだメールをサーバーから削除してはいかんのですか?

k-araki
質問者

お礼

>>自分で何番まで読み出したかを記録しておく必要があります。 なるほど。ググってみます。 >>つか読んだメールをサーバーから削除してはいかんのですか? あ…。言われて見ればそうですね。ありがとうございます!!

k-araki
質問者

補足

削除せずに、どこまで読んだか記録~がイマイチわからなかったので $pop->Delete($i); でサーバーから削除する事にしました。 読んだものはhoge.datに保存してサーバーから削除、次回からは新しいものだけを落としてきてhoge.datとの重複check後追加という形でウマクいきました! ありがとうございました~!

関連するQ&A