- ベストアンサー
IMAP関数でのメール受信について
- IMAP関数を使用してメールの受信を行いたいが、IMAP_BODYの利用に問題があり困っている。
- 現在、新着メールの確認、メールの情報取得、スクリプト実行、メールの削除を行う機能を作成しているが、情報不足で作成に悩んでいる。
- 使用している環境はAPACH 2とPHP 5で、初心者のため情報不足な点があるかもしれない。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
From行の情報でなく、その中のアドレスのみを抽出したいということでしたら、fromaddressでなくfromに入っています。$header->from[0]->mailbox にメールアドレスの@の前の部分、$header->from[0]->hostにドメインが入ります。この2つを@でつなげればメールアドレスになります。 戻り値に何が入っているのかマニュアルの記述だけだと具体的によくわからないときには、ちょっと乱暴ですがprint_rやvar_dumpで表示させてみるとすぐわかりますよ。
その他の回答 (1)
- Rayderl
- ベストアンサー率83% (40/48)
imap_body()はメールの本文のみを取得する関数なので、FromやSubjectなどのヘッダ情報も取りたい場合には他の関数が必要です。 ヘッダ情報を取得するには、imap_headerinfo()を使います。戻り値にはヘッダ情報を解析した結果が入っています。その中から$header->fromaddressからFromを参照するなどして必要な情報を取り出します。戻り値のオブジェクトについて詳しくはマニュアルを参照してください。 ■imap_headerinfo http://www.php.net/manual/ja/function.imap-headerinfo.php メールを削除するには、imap_delete()を使います。この関数は削除用のフラグを立てるだけなので、すぐに削除したい場合にはimap_expunge()を直後にコールします。後でまとめて削除する場合には、imap_close()にCL_EXPUNGEをつけてコールします。 といった説明で作れそうですか?
お礼
ご回答ありがとうございます。ヘッダー情報はimap_fetch_overview()で利用できました。メールの削除についてはこれから試したいと思います。 動作テストを行い、fromの情報を取得した際に新たな問題が発生しました。 送信者が名前を設定している際に、メールアドレスが取得できません。 なにかいい方法があれば、お教えいただければと存じます。
お礼
遅くなりまして、もうしわけございません。試してみたところ、時間がかかってしまったため、メールアドレスの抽出に関しては新たに質問したいと思います。ありがとうございました