我需要获取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
。所以它取决于服务器。
我的要求是我需要搜索Inbox
和Sent Items
。
实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
这是一个非常棘手的问题。文件夹名称完全为dependent on servers implementation
。不同的邮件程序具有不同的文件夹名称模式。如果您计划将此代码用于通用目的,则会no solution
。无法通过名称识别文件夹类型。
即使对于特定的邮件程序,由于以下原因,很难识别“已发送邮件”文件夹:
如果您计划使用正则表达式或模式匹配,则用户可以自由创建名称为“Sent Ansh”或“SentMailAnsh”或“AnshSentMail”的用户文件夹
其次,对于IMAP的Outlook(2010年我认为)这样的客户端,您可以灵活地将已发送邮件的邮件存储在特定文件夹中,因此即使系统有一个名为“已发送邮件”的文件夹,用户也可能更愿意将这些邮件存储在新的邮箱中名为“AnshSend”的文件夹
所以我建议你根据自己的要求分析情况。