PHPのPearのNet_Pop3を使用してメール受信をする方法についての疑問

このQ&Aのポイント
  • PHP初心者の方がPearのNet_Pop3を使用してメール受信をする方法について質問しています。
  • Outlook Expressのように受信したメールを削除せずにサーバーにコピーを置く方法について知りたいとのことです。
  • Net_Pop3を使ってOutlook Expressと同じようにメール受信を制御する方法を教えてください。
回答を見る
  • ベストアンサー

PEARのNet_POP3を使用したメール受信

PHP初心者です。 ちょっと疑問に思っておりまして、ご存じの方がおられましたらぜひお教えいただきたくお願いします。 PHPのPearのNet_Pop3を使用して、メール受信をしています。 メール受信時はメールを削除しないようにしています。 それで、Outlook Expressのように、「サーバーにコピーを置く」 というオプションと同じ動作をさせたいと思っています。 Outlook Expressでは一度受信したものは二度と受信しないように なっていますが、このような動作をNet_Pop3を使って 行うには、どのようにしたらいいでしょうか? よろしくお願いしますm(_ _)m

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

読み込み時にメールの$msg_idをサーバーに履歴します。次回以降読み込む時にNet_POP3::getListing()などで確認して、同じものは読まないようにすれば行くと思います。 また、僕は$msg_idの一意保証があるかどうか解っていないので、Net_POP3::getListing()で存在しなくなった$msg_id(メールサーバーから消えたid)をサーバー履歴から消しています。(これで正しいのかな?) 取り合えす僕のことろでは動いてます。^-^

参考URL:
http://pear.php.net/manual/ja/package.networking.net-pop3.getlisting.php
touchme
質問者

お礼

ご回答いただきありがとうございます! サーバーが勝手にやってくれるわけではないのですね・・ 参考になりました!

関連するQ&A

  • PEAR--Net_POP3。phpで受信メールの表示

    初めて質問します。 ものすごい初心者ですので、すごい簡単な返答をお願いします。 環境は自分で作ったサーバです。 Lunux centos PEAR Net_POP3 インストール済み(確認済) utf-8 PEARのライブラリで、Net_POP3を使用し、phpで、書いてみたのですが、私が参照したページの見本より、作成したPHPでは、動かないのです。何がいけないのでしょうか? 下記の様にPHPを記入して、サーバ接続は、ドメインを書き換えると接続できなく、しっかり記入すると、接続可能です。 ですが、ログイン部分は、パスワードをわざと間違えて記入しても、ログイン可能と表示されてしまいます。 ログイン部分がおかしいのか。それとも、エンコードの部分もおかしいのか、わかりません!みなさんのお力添えを!! <?php require_once('Net/POP3.php'); $account = array( 'host' => 'mail.私のドメイン', 'port' => '110', 'username' => 'メールアカウント', 'password' => 'メールパスワード', ); $pop3 =& new Net_POP3(); if($pop3->connect($account['host'], $account['port'],LOGIN)){ echo "接続OK!<br>"; }else{ echo "接続NGNGNG!<br>"; } if($pop3->login($account['username'], $account['password'],LOGIN)){ echo "接続OK!<br>"; }else{ echo "接続NGNGNG!<br>"; } $n_msg = $pop3->numMsg(); $header_list = $pop3->getParsedHeaders($n_msg); $body = mb_convert_encoding($pop3->getBody($n_msg), "utf-8", "jis"); $body = htmlspecialchars($body, ENT_QUOTES, "utf-8"); $pop3->disconnect(); echo "<dl>"; echo "<dt>差出人</dt><dd>".mb_decode_mimeheader($header_list['From'])." </dd>"; echo "<dt>件名</dt><dd>".mb_decode_mimeheader($header_list['Subject'])." </dd>"; echo "<dt>本文</dt><dd><pre>".$body."</pre></dd>"; echo "</dl>"; ?>

    • 締切済み
    • PHP
  • Gmailでpopを有効にしているのにメールが受信できないことがあります

    こんにちは。 今まで使っていたプロバイダのメールサービスが停止してしまったので、 新たにGmailのアカウントを取得しました。 POP設定をして普段はOutlook Expressでメールを確認しているのです が、先日GmailにログインしてみたらOutlook Expressで受信していない メールがいくつも見つかりました。 受信できているメールもありましたが、受信できていないメールのほうが 多いです。ちなみに受信できていないメールのいくつかは画像データが 添付されていました。 GmailのPOP設定は有効になっていて、Outlook ExpressでもGmailの アカウントを設定済みです。Gmailのヘルプも見てみましたが、何が 問題で受信できないのかよくわかりませんでした。 どうすれば問題なくOutlook ExpressでGmailのアドレス宛のメールを 受信できるでしょうか。

  • 受信メールの設定が変わってしまいます

    windows XP Outlook Expressなんですが、メール設定を何度してもサーバーの「受信メール(POP3)」が勝手に変わってしまいます。 送信は出来るのに、なぜ受信出来ない!?と悩んでアカウントを見てみると変わってました。直してもまたなりました・・・。 どのタイミングで切り替わるのかは分かりません。 周りに聞いてみたのですが、聞いたことないと言われました。 初心者なのでよろしくお願いします。

  • メールを○日後にサーバーから削除って、WEBメールで受信した場合もですか!?

    Outlook Expressで、 サーバーにメッセージのコピーを置き、5日後にサーバーから削除する という設定にしているのですが、 この5日後というのは、メールを受信してから5日後という意味ですよね? それは、Outlook ExpressなどのPCで使うメールソフトで受信してから5日後 という事でしょうか? それとも、WEBメールで受信しても、5日後には削除されてしまうのでしょうか? Outlook Expressなどで受信はしていないにも関わらず? 例えば、Yahoo!BBに加入している私は、「~@ybb.ne.jp」ドメインのメールを 持っている訳ですが、~@ybb.ne.jpに来たメールは、 インターネット上でもYahooのWEBメールとして見れるようになっています。 「メールを受信してから5日後に削除」という事は 私宛に来たメールをOutlook Expressでは受信せずに、このWEBメールで受信した場合、 その日から5日後にはサーバーから削除される、という事でしょうか? あるメールを、最初、WEBメールだけで受信して、それから5日以上経過した後に はじめてOutlook Expressを立ち上げた時は、もうそのメールはサーバーから 削除されてしまっている為、Outlook Expressでは受信できないって事でしょうか?   

  • 起動時に受信メール(POP3)が変わってしまう

    outlook expressを使用していますが、McAfeeのSpamkillerを入れた途端メールの受信が出来なくなってしまいました。ツール→アカウント→プロパティ→サーバー で現れる受信メール(POP3)Iが127.0.0.1に変わってしまい送信メールと同じものを入力しなおすと受信できます。でも一度電源を切ってしまうと127.0.0.1に戻ってしまうので、毎回入力しなおさないといけなくて、困っています。何か対策があれば是非ご指導のほど宜しくお願いします。

  • thunderbirdでのメール受信拒否について

    今までoutlook expressを使用していましたが、最近からthunderibird 2.0.0.12を使用し始めました。これまでoutlook expressでは迷惑メールの対応としてルールで件名送信者にある言葉が入っている場合にはサーバーから受信せずそのまま削除するようにしていましたが、thunderbirdにしてからメールフィルターで同じように言葉を引っ掛けてますが迷惑メールと判断されていても以前サーバーから受信されています。OEのように完全にメッセージを受信したくないのですがどのように設定すればよいでしょうか?今はメッセージフィルターで”メッセージをPOPサーバーから削除する”と”メールを削除する”にしていますが受信トレイに入ってきます。

  • メール受信

    メール受信ができません。(Outlook Express6.0を使用しています) popサーバやsmtpサーバ、アカウントなど、設定は間違いないのですが、なぜか受信できません。送信はできます。 禁止しているアドレスはないので、すべて受信できるはずなのですが・・・・。何故なのでしょうか??

  • Yahooメールのpop受信について

    Yahooメールに保存してあるデータを全てOutlook expressに保存しようと pop受信の設定を行ったのですが、新着メールのみの受信で過去のメールは ウェブ上に保存されたままでした。 過去のも含めて全てOutlookに保存するにはどのように設定すればよいのでしょうか?

  • 一旦受信したメールを再度受信するには

    Outlook Explessを使用し、POPで、受信メールをサーバに残す設定をしています。 一旦受信したメールの大部分を削除してしまいました。 残っているメールは残し、同じアカウントでサーバに残っているメールを再度受信するにはどのようにしたらよろしいのでしょうか。

  • メール受信エラー【Net/POP3.php】

    自作blogを作っています。 試行錯誤しているのですが、解決できないので質問します。 モブログを付加させようとまずはメール受信プログラムを 作りましたが、動きません。login errorがでます。 この前にimapも作って走らせたのですが、動きませんでした。 http://nescio.seesaa.net/article/67124976.html を見て、引数も設定し直しましたが、ダメでした。 Net/pop3でなくてもよいのですが、解決法が あったら教えてください。ロリポップを使っています。 <?php require 'Net/POP3.php'; require_once("Mail/mimeDecode.php"); $mail_conf = array( 'host' => 'mail??.lolipop.jp', 'port' => '110', 'user' => 'lolipop.jp-bbbb', 'pass' => 'aaaaa', 'auth' => 'true', ); $pop3 =& new Net_POP3; $con = $pop3->connect( $mail_conf['host'], $mail_conf['port'], $mail_conf['auth']); if(PEAR::isError($con)){ die("接続エラー"); } $login = $pop3->login( $mail_conf['user'], $mail_conf['pass'],$mail_conf['auth']); if(PEAR::isError($login)){ die("login error"); } $maillist = $pop3->getListing(); if ( is_array( $maillist) && 0 < count( $maillist)) { foreach ( $maillist as $mailinfo) { $m_id = $mailinfo[ 'msg_id']; $mail = $pop3->getMsg($m_id); $params['include_bodies'] = true; $params['decode_bodies'] = false; $params['decode_headers'] = true; $params['input'] = $mail; $structure = Mail_mimeDecode::decode( $params); print_r($structure); } } $pop3->disconnect(); ?>

    • ベストアンサー
    • PHP