2

ここにimap_headerダンプがあります...

$header = imap_header($mbox,$cms->page2);

stdClass オブジェクト ([日付] => 2013 年 6 月 11 日火曜日 19:12:28 -0700 [日付] => 2013 年 6 月 11 日火曜日 19:12:28 -0700 [件名] => darnhippies.org フォーラムのアカウントがロックアウトされました[Subject] => darnhippies.org フォーラムのアカウントがロックされました [message_id] => <201306120228.417bc449d097@www.darnhippies.org> [toaddress] => webmaster@example.com [to] => Array ( [0] => stdClass オブジェクト ( [メールボックス] => ウェブマスター [ホスト] => example.com )

    )

[fromaddress] => "darnhippies.org Forum" <webmaster@darnhippies.org>
[from] => Array
    (
        [0] => stdClass Object
            (
                [personal] => darnhippies.org Forum
                [mailbox] => webmaster
                [host] => darnhippies.org
            )

    )

[reply_toaddress] => "darnhippies.org Forum" <webmaster@darnhippies.org>
[reply_to] => Array
    (
        [0] => stdClass Object
            (
                [personal] => darnhippies.org Forum
                [mailbox] => webmaster
                [host] => darnhippies.org
            )

    )

[senderaddress] => "darnhippies.org Forum" <webmaster@darnhippies.org>
[sender] => Array
    (
        [0] => stdClass Object
            (
                [personal] => darnhippies.org Forum
                [mailbox] => webmaster
                [host] => darnhippies.org
            )

    )

[Recent] =>  
[Unseen] =>  
[Flagged] =>  
[Answered] =>  
[Deleted] =>  
[Draft] =>  
[Msgno] =>   22
[MailDate] => 11-Jun-2013 20:12:29 -0600
[Size] => 2008
[udate] => 1371003149

をメッセージ ID として使用して移動しようとしましたが、移動し$header->Msgnoたメッセージがないため、これは正しい ID ではないと推測されます。

$header->message_id移動するメッセージの ID として(この例では) を使用しますか?

私は試した...

$result1 = imap_mail_move($mbox,'<201306120228.417bc449d097@www.darnhippies.org>','Inbox.Trash');

$result1 = imap_mail_move($mbox,'201306120228.417bc449d097@www.darnhippies.org','Inbox.Trash');

$result1 = imap_mail_move($mbox,'<201306120228.417bc449d097@www.darnhippies.org>','Inbox.Trash',CP_UID);

$result1 = imap_mail_move($mbox,'201306120228.417bc449d097@www.darnhippies.org','Inbox.Trash',CP_UID);

$result1 = imap_mail_move($mbox,'<201306120228.417bc449d097@www.darnhippies.org>','Inbox.Trash','CP_UID');

$result1 = imap_mail_move($mbox,'201306120228.417bc449d097@www.darnhippies.org','Inbox.Trash','CP_UID');

また、サーバーアドレスを含む完全な受信トレイ名を使用してみました.

約90%の確率で次のエラーが発生します...

$boxes = imap_getmailboxes($mbox, "{mail.example.com}", "*");
print_r($boxes);

エラー: 配列 ( [0] => IMAP プロトコル エラー: IMAP コマンド COPY のエラー: 無効なメッセージ セット [1] => IMAP コマンド COPY のエラー: 無効なメッセージ セット )


では、正しいメッセージ ID を見つけるにはどうすればよいでしょうか。

UID とは何ですか?

ID のコンマ区切りリストを渡すことができることは承知しています。最初に 1 つのメッセージを移動しようとしています。

4

2 に答える 2

0

IMAP では、すべてのメッセージに 2 つの識別子があります。メッセージ シーケンス番号 (PHP では msgNo と仮定します) と一意の ID (UID) です。メッセージのシーケンス番号は、メッセージがメールボックスに追加され、メールボックスから削除されると変更される可能性がありますが、UID はメッセージの存続期間中永続的です*。

使用している文字列は、電子メールの Message-Id ヘッダーの「Message-Id」であり、メッセージの移動には使用できません (1 つには、必ずしも一意であるとは限りません)。UID を持っている場合は、imap_mail_move を UID 修飾子フラグと共に使用してメッセージを移動できるはずです。

(私は PHP API に詳しくありませんが、UID 修飾子フラグを message_header に渡して、結果セットで UID を取得することもできます。)

*: フォルダの UIDVALIDITY が変更されない限り、フォルダが削除され、同じ名前で再作成されない限り、適切に動作するサーバーでは変更されません。

于 2013-06-18T17:13:18.417 に答える