获取特定的imap文件夹名称PHP

时间:2013-03-18 05:11:33

标签: php email imap

我需要获取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);
?>

它将为我们提供一组邮箱名称,但我需要获取的是特定的邮箱名称。

Ex:对于电子邮件发送的项目,某些服务器会向我Sent Items和其他一些Sent。所以它取决于服务器。

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

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

这是一个非常棘手的问题。文件夹名称完全为dependent on servers implementation。不同的邮件程序具有不同的文件夹名称模式。如果您计划将此代码用于通用目的,则会no solution。无法通过名称识别文件夹类型。

即使对于特定的邮件程序,由于以下原因,很难识别“已发送邮件”文件夹:

  

如果您计划使用正则表达式或模式匹配,则用户可以自由创建名称为“Sent Ansh”或“SentMailAnsh”或“AnshSentMail”的用户文件夹

     

其次,对于IMAP的Outlook(2010年我认为)这样的客户端,您可以灵活地将已发送邮件的邮件存储在特定文件夹中,因此即使系统有一个名为“已发送邮件”的文件夹,用户也可能更愿意将这些邮件存储在新的邮箱中名为“AnshSend”的文件夹

所以我建议你根据自己的要求分析情况。