1

imap フォルダー名を取得する必要があり、通常はそうします

<?php
$mbox = imap_open(SERVER,USERNAME,PASSWORD)
      or die("can't connect: " . imap_last_error());

$list = imap_getmailboxes($mbox, SERVER, "*");
if (is_array($list)) {
    foreach ($list as $key => $val) {
        echo "($key) ";
        echo imap_utf7_decode($val->name) . ",";
        echo "'" . $val->delimiter . "',";
        echo $val->attributes . "<br />\n";
    }
} else {
    echo "imap_getmailboxes failed: " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

メールボックス名の配列が得られますが、取得する必要があるのは特定のメールボックス名です。

例: 電子メールで送信されたアイテムの場合、一部のサーバーは私に送信し、一部のサーバーはSent Items他のサーバーに送信しますSent。そのため、サーバーによって異なります。

私の要件は、Inboxとを検索する必要があることSent Itemsです。

これを達成するための最も好ましい方法は何ですか?

4

1 に答える 1

3

これは非常に難しい質問です。フォルダ名は完全にdependent on servers implementationです。メーラーが異なれば、フォルダー名のパターンも異なります。このコードを一般的な目的で使用することを計画している場合はno solution、それがあります。名前でフォルダの種類を識別する方法はありません。

特定のメーラーであっても、次の理由により、送信済みアイテムフォルダを特定するのは困難です。

正規表現またはパターンマッチングを計画している場合、ユーザーは次のような名前のユーザーフォルダーを自由に作成できます:Sent Ansh、SentMailAnsh、またはAnshSentMail

次に、Outlook(2010 i suppose)for IMAPのようなクライアントは、送信済みアイテムのメールを特定のフォルダーに保存する柔軟性を提供するため、システムに「送信済みメール」という名前のフォルダーがあり、ユーザーはこれらのメールを「」という名前の新しいフォルダーに保存することをお勧めします。 AnshSend」

したがって、要件に基づいて状況を分析することをお勧めします。

于 2013-03-18T05:58:32.227 に答える