0

次の構造のメールボックス (フランス語) があります。

me@example.com
|
|_Inbox
|_Brouillons (="Drafts")
|_Éléments envoyés (="Sent items")
|_Éléments supprimés (="Deleted items")

私のユーザーは通常、ウェブメールまたはメール クライアントでメールをチェックします。しかし、いくつかのアクセント空白Éléments envoyésを含む名前の「送信済み」フォルダーにメッセージを手動で追加する必要がある場合があります。

関連する PHP コードは次のとおりです。

$imap_stream = imap_open("{imap.example.com:143/tls}", "me@example.com", "password");
imap_append($imap_stream, "{imap.example.com:143/tls}Éléments envoyés",
...

上記のコードは機能しません。のようにアクセントのないフォルダで試してみるとBrouillons、メッセージは正しくコピーされます。

エンコードの問題でしょうか?Thunderbirdでプロパティを確認すると、場所は次のように表示されます

imap://me%40example.com@imap.example.com/%26AMk-l%26AOk-ments%20envoy%26AOk-s

前もって感謝します!

4

1 に答える 1

2

Max のコメントのおかげで、何を探すべきかがわかり、beetstra の答えが見つかりました。

解決策は次のとおりです。

$utf7_folder_name = mb_convert_encoding("Éléments envoyés", "UTF7-IMAP", "UTF-8");
$imap_stream = imap_open("{imap.example.com:143/tls}", "me@example.com", "password");
imap_append($imap_stream, "{imap.example.com:143/tls}".$utf7_folder_name,
...
于 2013-08-16T22:37:11.143 に答える