【问题标题】:Accessing a mail with Gmail with php and changing the folder使用 php 访问 Gmail 邮件并更改文件夹
【发布时间】: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


【解决方案1】:

所以经过几次尝试,我发现这是可行的:

imap_mail_move($inbox, $email_number, 'INBOX') or die('Error');
imap_mail_move($inbox, $email_number, 'test2') or die('Error');

但这意味着移动到收件箱,然后移动到第二个文件夹。问题:在这些之后,邮件仍在收件箱中。

仍在寻找其他解决方案。

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 2014-10-29
    • 1970-01-01
    • 2014-02-24
    • 2017-11-01
    • 1970-01-01
    • 2013-08-13
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多