我想通过imap访问gmail中的All文件夹。用不同的语言和不同的名字。 我该怎么办?
连接代码是:
$mail= imap_open('{imap.gmail.com:993/imap/ssl} //The all folder should be here ',$user,$pass);
答案 0 :(得分:2)
如[{3}}所述,Gmail支持here。这意味着"所有"的LIST
响应文件夹将包含\All
属性,与使用的语言无关:
* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail"
不幸的是,似乎PHP IMAP库只返回有限数量的邮箱属性,\All
不是其中之一,所以只有在库更新后这才是可行的解决方案。
答案 1 :(得分:2)
这是我找到问题的解决方案。想法是All文件夹包含最多的邮件,所以我们必须获取所有文件夹中的邮件数量,然后找到最大的数字,即所有文件夹
当垃圾箱中的邮件数量大于所有文件夹时,此解决方案存在问题。
$mbox=imap_open("{imap.gmail.com:993/imap/ssl}", "user", "pass");
$list = imap_getmailboxes($mbox, "{imap.gmail.com:993/imap/ssl}", "*");
$mailbox=null;
$mailbox_name='';
$number=0;
foreach ($list as $key ) {
$con=imap_open("$key->name", "user", "pass");
$number_msg=imap_num_msg($con);
if($number_msg > $number)
{
$number = $number_msg;
$mailbox= $con;
$mailbox_name= $key->name;
}
}
答案 2 :(得分:0)
尝试
$folders = imap_listmailbox($mbox, "{imap.gmail.com:993/imap/ssl}", "ALL");
答案 3 :(得分:0)
如果您使用的是 PhpImap 库,您可以通过以下方式访问“所有邮件”文件夹:
$mailbox = new PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}[Gmail]/All Mail', $user, $pass, $attachment_dir);