Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用IMAP从上次同步到php应用程序获取新到达的电子邮件_Php_Email_Imap - Fatal编程技术网

使用IMAP从上次同步到php应用程序获取新到达的电子邮件

使用IMAP从上次同步到php应用程序获取新到达的电子邮件,php,email,imap,Php,Email,Imap,我想创建一个php脚本,使用IMAP获取新电子邮件并将其存储在我的数据库中。我想知道如何识别上次同步后到达收件箱和其他邮箱的新电子邮件 同一个IMAP电子邮件帐户与outlook连接,因此新的电子邮件可能已经在outlook中看到,而outlook可能尚未同步到PHP应用程序。我无法使用“看不见”标志,因为同一邮箱在多个位置使用。我想知道使用上一次电子邮件同步获取新电子邮件的最佳方式 假设收件箱中有100封电子邮件。上次我的php程序同步了50次。现在它只需要同步接下来的50封电子邮件。但在这些

我想创建一个php脚本,使用IMAP获取新电子邮件并将其存储在我的数据库中。我想知道如何识别上次同步后到达收件箱和其他邮箱的新电子邮件

同一个IMAP电子邮件帐户与outlook连接,因此新的电子邮件可能已经在outlook中看到,而outlook可能尚未同步到PHP应用程序。我无法使用“看不见”标志,因为同一邮箱在多个位置使用。我想知道使用上一次电子邮件同步获取新电子邮件的最佳方式


假设收件箱中有100封电子邮件。上次我的php程序同步了50次。现在它只需要同步接下来的50封电子邮件。但在这些新的50封邮件中,有25封邮件使用outlook进行了检查(已经看到)。因此,当我为PHP应用程序使用UNSEEN标志标准时,它只给出了25封尚未阅读的电子邮件,但我应该得到50封电子邮件


我应该能够使用上一个PHP电子邮件同步应用程序中的内容来获取下一个设置。但是我不知道应该使用哪个。

您可能正在IMAP协议中寻找唯一的ID。您的服务器不应跨会话(即下次连接到服务器时)更改唯一ID,以便您可以查找:

这些数字具有某些属性,我认为它们可以表达的顺序以及唯一性应该有助于您不必搜索所有电子邮件:

唯一标识符 在邮箱中以严格的升序方式分配;各 邮件被添加到邮箱,其分配的UID高于 以前添加的邮件。与消息序列不同 数字、唯一标识符不一定是连续的

当您使用此UID时,您还必须使用该部分中概述的UID,因为将其存储到数据库时,UID基于UID的值。如果UIDVality发生更改,则需要重新为邮箱编制索引

备用邮箱 或者,创建另一个邮箱,并在收到邮件时告诉邮件服务器将副本转发到该邮箱。邮件客户端(Outlook)不会标记这些邮件,因为您不共享该邮箱。然后,您已经有了一个数据库服务器(因为IMAP可以算作电子邮件服务器),所以这可能正是您想要的方式

通过管道将邮件发送到脚本 作为另一种选择,只需将mailserver配置为将新电子邮件通过管道发送到脚本,该脚本将这些电子邮件插入数据库。这一点(以及其他一些方法)见:


不要寻找旗帜,而是寻找电子邮件。非新的已在数据库中。但我看不出这是一个太多的编程问题,只是太宽泛了。如果我检查电子邮件,那么imap_search()函数的标准是什么?因为获取所有电子邮件并检查数据库并不能解决问题。假设收件箱中有100封电子邮件。上次我的php程序同步了50次。现在它只需要同步接下来的50封电子邮件。但在这些新的50封邮件中,有25封邮件使用outlook(处于读取状态)进行了检查。我应该能够使用上一个php电子邮件同步应用程序中的内容来获取下一个设置。但是我不知道我应该用哪一个。现在用这个例子问更好的问题。谢谢。我目前正在尝试处理服务器时间的事情。临时的,我在最后一次同步时间前30分钟收到电子邮件&如果数据库中的电子邮件标题不存在,则忽略。但这不是正确的方法。我使用了pipethemail选项将所有电子邮件发送到处理它的应用程序。