3

我正在使用 IMAP 从我的谷歌帐户读取电子邮件,但无法找到一种方法来检查是否存在具有确切数字的电子邮件或为什么会发生此错误。

这是我的代码,所以基本上我建立一个连接,而不是搜索所有电子邮件去获取来自特定发件人列表的列表,然后运行处理函数

$mail_conn = imap_open($this->hostname, $this->username, $this->password);

...

$emails = imap_search($mail_conn, 'FROM ' . $sender, SE_UID);
$results = $this->process($mail_conn, $emails);

处理函数看起来像这样

……

            foreach ($emails as $email_number)
            {
            $email_structure = imap_fetchstructure($mail_conn, $email_number, FT_UID);

......

我试图删除 FT_UID 但同样的错误仍然存​​在。你有什么建议该怎么做?

我调试时得到的是:

在电子邮件中 ​​imap_search 返回

[emails] => Array
    (
        [0] => 513384
        [1] => 513501
        [2] => 514079
    )

我开始处理这个 id

[email_number] => 513384

发生该错误后。

4

2 回答 2

2

我遇到了同样的问题,以下似乎有帮助:

替换您的搜索电话

$emails = imap_search($mail_conn, 'FROM ' . $sender, SE_UID);

带有搜索条件的排序调用

$emails = imap_sort($mail_conn, SORTARRIVAL, 0, null, 'FROM ' . $sender);

请注意,如果指定了选项 SE_UID(而不是我在那里的 null)它会因某种原因停止工作......

于 2011-10-10T01:20:59.593 回答
0

函数 imap_sort 有格式:

imap_sort ($imap_stream, $criteria, $reverse, $options = 0, $search_criteria = null, $charset = 'NIL')

您必须使用:imap_sort ($mail_conn, SORTARRIVAL, 0, SE_UID, 'FROM ' . $sender)

于 2016-01-05T11:33:45.640 回答