• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php imap_delete()でエラー)

php imap_delete()でエラーが発生し、Yahooメールの削除ができません

このQ&Aのポイント
  • 外部サーバー上のphpスクリプトでYahooメールボックスに接続し、メール一覧を取得して特定のメールを削除または別フォルダーに移動させたいが、エラーが発生する。
  • Lolipopのメールサーバーでは同じスクリプトで削除や移動ができるが、Yahooメールサーバーにはできない。
  • imap_delete()やimap_mail_move()の結果はエラーでもTrueが返される。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5252/13737)
回答No.1

imap_delete() で指定する message_nums はIMAPサーバがメッセージに割り当てている番号であって、貴方が取得した「何件目」の番号とは一致しない場合があるのでループのカウンターの値を入れても番号が一致せずエラーになります。 imap_delete() はリファレンスを見ると必ず True を返すようなので、IMAPサーバ側で処理がエラーになってもPHP側の処理としては True と言う事のようです。

creative_soso
質問者

お礼

早々のアドバイスありがとうございました。 おっしゃるように、Yahooメールボックスの場合は UIDを指定するようです。 $UID = imap_uid($mbox, $i); で UIDを取得して imap_delete($mbox, $UID, FT_UID); または imap_mail_move($mbox, $UID, "Trash", FT_UID) とすることで削除できました。 1週間ほど悩んだ疑問が解消できて感謝です。

関連するQ&A