- 締切済み
メールを受信した後、特定メールを削除
メールフィルターで受信後にプログラムを起動し特定のメールだけ削除したいのですが可能でしょうか? メールフィルターは以下です。CCはメールボックスから削除しない。 cc "| /home/○○/○○/mailgo.php" PEARを使ってまず受信します。 $params['input'] = file_get_contents("php://stdin"); $structure = Mail_mimeDecode::decode($params); メールのファイル名などを取得し、その後、削除したいメールも特定できたのですが どうすればいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- shimix
- ベストアンサー率54% (865/1590)
>file_get_contents("php://stdin"); >でメールデータを取得した際にUID(もしくはメール番号)も取得できているのでしょうか? メールデータのヘッダ部からMessage-IDは抽出出来ていますよね?あとはimapで繋いでメール番号の先頭からimap_headerinfoでmessage_idが同一のメール番号を探して削除することになります。 http://www.php.net/manual/ja/ref.imap.php
- shimix
- ベストアンサー率54% (865/1590)
>pearの中にNet_IMAPというものがあったがこれはメールボックスに >アクセスする関数ぽいので違うのかなと思いました。 「メールを削除する」というからには、メールボックスにアクセスしないと無理です。メールボックスからUID(もしくはメール番号)で指定して削除します。
- shimix
- ベストアンサー率54% (865/1590)
>削除したいメールも特定できた UIDが特定出来たということなら、メールサーバと繋いでUIDからメール番号を取得→メール番号指定で削除だと思うけど、どのあたりがわからないのでしょうか? http://www.php.net/manual/ja/function.imap-msgno.php http://www.php.net/manual/ja/function.imap-delete.php
補足
回答ありがとうございます。 すいません。間違いもありましたし、言葉足らずでした。 削除したいメールも特定できていませんでした。 mailfilterで処理 1.ccで取得(メールボックスから削除しない) cc "| /home/○○/○○/mailgo.php" mailgo.phpで処理 以下の形でメール情報を取得し、必要な分だけデータベースに抽出しました。 http://www.phppro.jp/phptips/archives/vol35/1 その直後に、抽出したメールの場合、メールボックスから削除しようと考えたのですが特定できていないので削除できません。 require_once 'Mail/mimeDecode.php' で抽出したデータの中身を見ましたがメールを特定できるものがなさそうです。 pearの中にNet_IMAPというものがあったがこれはメールボックスにアクセスする関数ぽいので違うのかなと思いました。 削除できなければ以下の方法で対応しようと思ったのですが あまりスマートではないと考え、思案中です。 .mailfilterで処理 1.toで取得(メールボックスから削除) to "| /home/○○/○○/mailgo.php" mailgo.phpで処理 2.必要なメールデータだったらデータベースに抽出 3.抽出していないものを別アドレスに転送
補足
何度も回答いただきありがとうございます。 UID(もしくはメール番号)を取得方法がわからないです。 file_get_contents("php://stdin"); でメールデータを取得した際にUID(もしくはメール番号)も取得できているのでしょうか? 又は、取得したデータからUID(もしくはメール番号)を取る方法がわかりません。