【发布时间】:2016-07-01 14:38:41
【问题描述】:
我使用 php 访问 gmail 以对邮件进行操作。我直接使用 gmail 将这些邮件放入一个文件夹中。 所以这是我的代码:
$hostname = '{imap.gmail.com:993/ssl}test';
$username = 'myaddress@gmail.com';
$password = 'mypassword';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'ALL');
//$emails = imap_search($inbox,'RECENT');
print_r($emails);
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
$emailCount = 1;
foreach($emails as $email_number) {
//echo 'email n∞' . $emailCount;
/* get information specific to this email */
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_fetchbody($inbox,$email_number,2);
$structure = imap_fetchstructure($inbox,$email_number);
if (!$overview[0]->seen) {
print_r($overview);
$emailCount++;
}
}
// echo $output;
}
/* close the connection */
imap_close($inbox);
不,我想将这些邮件移动到其他文件夹中,例如 test2 这就是我所做的:
imap_mail_move($inbox, $email_number, 'test2') or die('Error');
但我得到一个错误: 注意:未知:[TRICREATE] No folder test2 (Failure) [THROTTLED] (errflg=2) in Unknown on line 0
我尝试了这些不同的解决方案: 有一个名为 test3 的测试子文件夹
imap_mail_move($inbox, $email_number, 'test3') or die('Error');
同样的错误。 也试过了:
imap_mail_move($inbox, $email_number, '[Gmail]/test3') or die('Error');
同样的错误:-(
如果有人有一个很酷的解决方案!
谢谢,
亚历克斯
【问题讨论】:
-
多年未使用 php,但您是否尝试过打印出可用文件夹列表? getmailboxes 类似的东西
-
好主意,我发现了这个功能。它返回给我 {imap.gmail.com:993/ssl}test2 但即使尝试这样做我也有同样的错误:-(
-
尝试将 {imap.gmail.com:993/imap/ssl} 作为主机名,然后移至“test2”(我认为该文件夹必须存在)
-
{imap.gmail.com:993/imap/ssl} 或 {imap.gmail.com:993/ssl} 给出相同的结果未知:[TRICREATE] 没有文件夹 {imap.gmail.com :993/imap/ssl}test2 (Failure) [THROTTLED] (errflg=2) in Unknown on line 0 :-(
-
我没有想法。我唯一能想到的是读/写权限。不知道如何在 PHP 中授予它,但可能是问题...
标签: php email gmail directory imap