2013-03-18 36 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