我正在研究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
发生错误后。
答案 0 :(得分:2)
我遇到了同样的问题,以下似乎有所帮助:
替换您的搜索电话
$emails = imap_search($mail_conn, 'FROM ' . $sender, SE_UID);
带有搜索条件的排序调用
$emails = imap_sort($mail_conn, SORTARRIVAL, 0, null, 'FROM ' . $sender);
请注意,如果指定了选项SE_UID(而不是我在那里的null),它会因某种原因停止工作......
答案 1 :(得分:0)
函数imap_sort具有格式:
<body>
<div id="a">{{ss}}</div>
<script type="text/javascript">
document.getElementById("a").addEventListener("click",function(){
alert("a");
})
</script>
</body>
您必须使用:imap_sort ($imap_stream, $criteria, $reverse, $options = 0, $search_criteria = null, $charset = 'NIL')