• 締切済み

空メール登録処理(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;

  • Perl
  • 回答数1
  • ありがとう数2

みんなの回答

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

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

k-araki
質問者

お礼

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

k-araki
質問者

補足

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

関連するQ&A

  • Sendmailでのpop3に関して

    お世話になります。 Linux初心者ですが、何時も本サイトを参考にさせて戴き、少しづつですが進んで?おります。 さて、Sendmailでメールサーバを立てる段階になり、色々と悪戦苦闘した挙句、送信は行く様になりましたが、受信が行きません。 OS=RedHat7.1 qpopper4.0.4 sylpheed-0.8.1 以上をインストールしてあります。 SendmailはCF-3.7Wpl2で編集しています。 sylpheedで「受信」を行うと、 ------------------------------------------------- pop3サーバ:192.168.*.*に接続中... pop3< +OK Qpopper(version4.0.4)at hoge.com starting pop3>USER hoge pop3<+OK Password required for hoge pop3>PASS ********* pop3<+OK hoge has 0 visible messages(0 hidden)in 0 octets. pop3>STAT pop3<+OK0 0 pop3>QUIT pop3<+OK Pop server at hoge.com singing off. ------------------------------------------------- とログに表示されているので、見には行っていると思うのですが・・・? 因みに、別マシン(Win2000)ではhogeから送られたメールを受け取る事が出来ましたので、「返信」を掛けた処良くあるMailNotDeliveryも返って来ません。 何処が問題か?お気づきの方がいらっしゃいましたら、是非ご指導の程、宜しくお願い申し上げます。

  • メイルフォームの本文が文字化け

    サーバーを移転してからある特定のソース部分だけ不具合が出ました。 ユーザーがログイン後特定のユーザーにアドレスを公開せずに、メッセージをおくり、その内容がユーザのアドレスに受信するというものなのですが、 その受信するメイルが文字化けしてしまいます。 その他にサイト上からおなじCGIファイルを利用して、管理者などにおくるメイルは正常に機能しています。 ■不具合が出ている部分のソースです。 if (!open(OUT,"| $SENDMAIL -t")) print OUT "Reply-To: $ADMIN\n"; print OUT "Errors-To: $ADMIN\n"; print OUT "To: $MAIL_TO\n"; if ($BCC == 1){ print OUT "Bcc: $ADMIN\n"; } print OUT "From: $ADMIN\n"; &jis("Subject: $SUBJECT"); print OUT "$msg\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT 'Content-Type: text/plain; charset=iso-2022-jp' . "\n\n"; &jis("$NAME_FROM:$FORM{'MSG'}"); print OUT "$msg\n"; &jis("▽返事はココから"); print OUT "$msg\n"; &jis("$bbs_cgi1?M=H&T=$ID_FROM&I=$ID_TO&PASS=$PASS_TO"); print OUT "$msg\n"; close(OUT); } print "Content-type: text/html\n\n"; print "<html><head><title>$TITLE</title></head><body>■送信完了<HR> $NAME_FROMさんより$NAME_TOさんへメール送信完了しました。<hr>\n"; print "[<a href=$menu_cgi?mode=menu&I=$MYID&PASS=$MYPASS>メニューに戻る</a>]<br>\n"; print "</body></html>\n"; exit; } ■文字化けは aika!' (Basd "&JV;v$O%3%3$+$i (B ような感じです。 かなりいろいろ探してみたのですが、だめなので ここに投稿しました。 わかる方いらっしゃいましたら、どうぞご回答いただければと思います。よろしくお願いします。

    • 締切済み
    • CGI
  • クライアントでメールができない

    Windows server 2003にてActive Directry、DNS、DHCP、ファイルサーバとして運用している環境で、ドメインに参加しているクライアントでメール(送受信ともに)ができません。 メール自体は外部のホスティングサービスを利用しておりますので、メールサーバは外部のものです。 【状況】 クライアントPC----サーバ(windows server 2003)DHCP使用           ∟----ルータ------インターネット 各クライアントではインターネットはできます。DHCPによるIP取得もうまくいっているようです。 クライアントPC-----ルータ(DHCPをON)----インターネット という環境では同じメーラーのアカウント設定の状況でメールの送受信ができるため、原因はサーバにあると考えているのですが・・・。 どのような原因が考えられますでしょうか?

  • smtpと、popについて、サーバーから見ると。。。

    サーバ間でメールのやり取りをしたり、クライアントがサーバにメールを送信する際に用いられるのがsmtpということになっていて、サーバからメールを受信するためのプロトコルがpopということになるとおもうのですが、では、サーバー側にとっては、メールを受信するのがsmtpで、クライアントにメールを送信するのがpopということであってますでしょうか?メールを送信がsmtpで、受信がpopと覚えていたので、サーバー(linuxです)からみると反対なのかなとおもいまして。

  • httpsクライアントについて

    以下のようなプログラムでhttpsクライアントを作ろうと思ったのですが 何も表示されません。どのようにしたらよいかアドバイスをいただけない でしょうか? #!/usr/bin/perl $url='https://www3.idpass-net.sia.go.jp/neko/action/z0401'; &process; print "Content-type: text/html\n"; print "\n"; print $lines; exit(0); sub process { undef $lines; use IO::Socket qw(:DEFAULT :crlf); $/ = CRLF . CRLF; my $data; ($host,$path) = $url =~m!^https://([^/]+)(/[^\#]*)!; my $socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => 'https(443)'); print $socket 'GET ', $path, ' HTTP/1.1', CRLF, 'Host: ', $host, CRLF, CRLF; my $headerN = <$socket>; $lines .= $data while read($socket,$data,1024) > 0; }

  • POPメールの既読、未読について

    こんにちは。 現在、solaris9上でメールサーバを構築しています。このたび、サーバを更改し、メールデータをコピーして、Qmail環境からpostfix+tpop3d+DRAC環境に変更しました。 しかし更改と同時に、クライアントがメールを受信しようとしたら、既読のメールを何百通も再受信してしまったという現象が起こりました。 私の認識では、メールの既読、未読を管理しているのは、クライアントのメーラなので、popサーバを更改しても、メールの再受信はないものと考えていたのですが、認識が誤っているのでしょうか? POPサーバにおける未読、既読の管理について、ご教授いただければと思います。

  • 無料POPメール紹介して下さい

    Yahoo,GMail,HOTMail以外で、無料のPOPメールアカウントが取得できるところを教えてください。 条件として、POP3とSMTPのメールサーバ名が違うものが希望です。 mail.aaa.co.jp でPOPとSMTPが使えるサーバでなく pop.aaa.co.jp smtp.aaa.co.jp のようなところを紹介して下さい。

  • メールサーバーPOP3pop.mail.yahoo

    ez-mailcheckerでヤフーフリーメールが 接続できませんでした メールサーバーPOP3[pop/.mail.yahoo.co.jo]が間違っているかも と吹き出しが出ます ずっと同じ設定でOkでしたが何かezで不具合があるのでしょうか 設定内容の確認/再診のメールを取得するではOk 他のメールアドレスではOK

  • sendmailが上手く動かないのかメールが届きません

    こんにちは。 sendmailが上手く動かなくて困っています。特にエラーは出ないのですが、メールが全く届きません。 以下プログラムです。(必要そうな箇所だけ) $sendmail = '/usr/sbin/sendmail'; $mail ='mail@xxx.xx'; $msub = 'メールタイトル'; &mailto if ($sendmail && $mail); sub mailto { $mcom = $FORM{'comment'}; $mcom =~ s/&lt;/</g; $mcom =~ s/&gt;/>/g; # メール本文 $mbody = <<"EOM"; $mcom -------------------------------- ホスト名:$host ブラウザ:$ENV{'HTTP_USER_AGENT'} -------------------------------- EOM if ($msub eq ""){ $msub = NO Subject; } &jcode'convert(*msub,'jis'); &jcode'convert(*mbody,'jis'); open(MAIL,"| $sendmail -t") || &result; print MAIL "To: $mail\n"; print MAIL "From: $mail\n"; print MAIL "Subject: $msub\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "X-Mailer: $ver\n\n"; print MAIL "$mbody\n"; close(MAIL) || &result; } プログラムは一言フォームからコメントを受け取るものです。 jcodeの読み込み、decode等は正常に行われており、openやcloseの前後にprint $mbodyなどしてみても正常に表示されることから、確かだと思います。 他の有名なCGIサイトさんのスクリプトや本等を参考に自作したもので、もちろんそれらのメールフォームは正常に動きます。 ですから、何か小さなミスをしているだけだと思うのですが、それが何なのか見つけることが出来ません。 もし何かお気づきの点がありましたら、教えていただければと思います。

    • ベストアンサー
    • Perl
  • レンタルサーバーのNET::POP3呼び出し

    NET::POP3を使って空メールシステムで会員登録をするシステムをレンタルサーバーシックスコアで設置しようとしています。 以前までは知り合いの自己サーバーを使用して正常に作動いましたがレンタルサーバーに引越ししようと設定していますが。 返信メール、登録ともにまったく応答がありません。 > #---登録時の自動応答メール情報--- > # POP3ホスト名 > $host_name = 'cacomon.net'; > > # POP3ユーザー名 > $user_name = 'info@cacomon.net'; > > # POP3パスワード > $passwd = '******'; > > 以上のよいうに設定いますがどこかの情報がまちがっているみたいなのですが。 > > #---登録時の自動応答メール情報--- > # POP3ホスト名 > # POP3ユーザー名 > # POP3パスワード > はどの部分が上記の部分に当たるのか教えていただきたいのですが。 > また、それ以外が問題になっていいるのか。 > 見つけ出すことができません。 > 宜しくお願いします。 > > レンタルサーバーにはNET::POP3モジュールなどは入っています。 > レンタルサーバーシックスコアに質問してみましたが。プログラムに関する質問が

専門家に質問してみよう