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。所以它取决于服务器。

我的要求是我需要搜索Inboxand Sent Items

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

4

1 回答 1

3

这是一个非常棘手的问题。文件夹名称完全是dependent on servers implementation. 不同的邮件程序有不同的文件夹名称模式。如果您打算将此代码用于通用目的,那么就no solution可以了。无法通过名称识别文件夹类型。

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

如果您计划进行正则表达式或模式匹配,那么用户可以自由创建一个用户文件夹,其名称如下:Sent Ansh 或 SentMailAnsh 或 AnshSentMail

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

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

于 2013-03-18T05:58:32.227 回答