使用 IMAP 检查文件夹是否存在


Check if folder exists with IMAP

我有一个处理电子邮件并将其移动到另一个文件夹的脚本。目前它工作正常,但我希望能够在执行之前先测试我要将电子邮件移动到的文件夹是否存在imap_mail_move()。有没有快速的方法可以做到这一点?

$hostname="{".$imap_details['imap_server']."}INBOX".$imap_details['imap_path'];
$imap = imap_open($hostname, $imap_details['email'], $imap_details['imap_password']);
$processed_folder="INBOX/Processed";
//*** I would like to check if the above folder exists here ****
//And then do some processing here
//And then move the email to the processed folder
imap_mail_move($imap,$i,$processed_folder);
$folder = 'INBOX/Processed';
$cstr = '{server.foo.com:993/ssl}';
$imap = imap_open($cstr, ...);
$list = imap_list($imap, $cstr, "*");
if( array_search($cstr.$folder, $list) === false ) {
  die("no folder!");
}

http://php.net/manual/en/function.imap-list.php

array_search() 返回数组中元素的键。

if( array_search($cstr.$folder, $list) === "-1" ) {

 die("no folder!");

}

我认为没有理由使用array_search(如其他答案)而不是in_array.

$folder = 'INBOX/Processed';
$cstr = '{server.foo.com:993/ssl}';
$imap = imap_open($cstr, ...);
$list = imap_list($imap, $cstr, "*");
if (in_array($cstr . $folder, $list))
  exit("No such folder!");