2013-03-18 131 views
1

我需要的IMAP文件夾名稱,通常我做獲取特定的IMAP文件夾名稱PHP

<?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。所以它取決於服務器。

我的要求是我需要搜索InboxSent Items

實現此目的的最佳方法是什麼?

回答

3

這是一個非常棘手的問題。文件夾名稱完全是dependent on servers implementation。不同的郵件程序具有不同的文件夾名稱模式。如果您打算將此代碼用於通用目的,那麼它有no solution。無法通過名稱來識別文件夾類型。

即使對於具體郵寄的,因爲以下原因它很難識別發送郵件文件夾:

如果你計劃有一個正則表達式或模式,然後匹配用戶可以自由創建名稱的用戶文件夾像:已發送Ansh或SentMailAnsh或AnshSentMail

其次像Outlook(2010我想)爲IMAP的客戶端提供了將已發送郵件存儲在特定文件夾中的靈活性,因此即使系統有一個名爲「已發郵件」的文件夾用戶可能更喜歡將這些郵件存儲在名爲「AnshSend」的新文件夾中

因此,我會建議您根據您的要求分析情況。

+0

謝謝,我目前正在做的只是將電子郵件文件夾名稱放在配置文件中。用戶需要配置文件夾名稱。 – Red 2013-03-18 06:05:04