2012-02-08 78 views
0

我正在尝试编写一个cron作业,用于检查邮箱中的邮件并对其进行一些转换。我正在使用PHP IMAP扩展并通过POP3访问邮箱(这是谷歌托管)。我如何使用PHP IMAP不断从邮箱中下载相同的邮件

我现在正在测试它,我希望能够在邮箱中收到一封邮件,并在该邮件中继续测试我的代码,直到我很高兴。

不幸的是,一旦我检查了该电子邮件,它将不再下载,并且我收到“邮箱为空”。任何人都可以帮我节省一些时间,让我知道如何继续检查我已经检查过的邮件吗?

+0

你能展示一些你已经试过的代码吗? – Alex 2012-02-08 16:45:12

+0

'$ imap = imap_open(“{pop.gmail.com:995/pop3/ssl}INBOX”,“[email protected]”,“password”);''会在运行两次邮箱时出现错误。 – Gausie 2012-02-08 16:57:04

+0

接下来是什么,在imap_open之后? – 2012-02-08 19:46:28

回答

1

当你获取通过POP3邮件,则有两种不同的选择:

  • 流行可以从服务器获取邮件(这通常是默认设置)或
  • 弹出可以用来读取的邮件服务器,让他们在那里(这就是所谓的“保留在服务器上)

您需要保留在服务器上。

还有一个叫做标志‘看到’的决定,WHI通信邮件未读给你。确保你处理这个标志是正确的,否则你可能会要求新的邮件,你的邮件不是新的。

imap_status()将设置读取标志,imap_num_msg()不会触及任何标志。

imap_fetchstructure()不仅读取消息结构,而且读取整个消息,我怀疑它也会标记读取的邮件。请确认当您在像thunderbird这样的客户端中将邮件明确标记为新邮件(或未读邮件)时,它是否会更改任何内容:总览中有一个绿色的泡泡,在读取邮件时变为黑色。点击它标记邮件未读。

+0

这绝对是将消息留在服务器上(因为我可以通过标准客户端并仍然可以看到它在那里)。服务器或客户端维护了看到的标志吗?看到的 – Gausie 2012-02-08 16:52:18

+0

保持在服务器上。当您使用普通邮件客户端(例如thunderbird)访问此帐户时,您会看到邮件为新邮件或未读邮件 - 或者不是。 – 2012-02-08 18:54:30

+0

您确定,您的标准客户端没有缓存邮件? – 2012-02-08 19:00:23