1

我们构建了一个需要不断检查电子邮件信息的网络服务。基本上,用户向我们发送一封电子邮件,服务器应根据该电子邮件执行操作。我们可以使用一个 crontab PHP 脚本,通过 POP 每分钟检查一次新消息。但这对 popserver 来说是一种冒犯,而且效率不高(1 分钟太长)。

但是,我已经阅读了有关在移动设备上使用 IMAP 推送电子邮件的信息。就我而言,它不是移动设备,而是网络服务器。

我可以将电子邮件推送到我的网络服务器并让它执行 PHP 脚本吗?我们使用 GMail 作为 POP/SMTP/IMAP 服务器。

从答案中编辑 1,我们发现:

  1. 我的网络服务器上必须有一个 24/7 运行的进程(守护进程)检查电子邮件

  2. 此守护进程可以使用以下方式与 Gmail 通信:i) 带有 NOOP coomand 的 POP 或 ii) 带有 IDLE 命令的 IMAP

什么是最好的?POP 还是 IMAP?谷歌似乎邀请更多使用 IMAP。

我不想过度使用 gmail(他们检查电子邮件的“合理用途”是什么?每 10 秒一次?

4

4 回答 4

2

如果您想使用 postfix 作为您的 MTA,您可以将电子邮件地址别名为任何像这样的可执行文件。在 *nix 盒子上设置真的不是那么难......

于 2009-07-01T02:52:30.000 回答
2

我没有使用 IMAP 的经验,但必须做同样的事情。如果我是你,我会安装 Postfix 并使用 pipe 命令(基本上可以让你运行任意脚本)来调用一个小型 http 客户端来解析电子邮件并将其发送到你的服务器。

当然,您可以用您喜欢的任何 MTA 替换 postfix。关键是:不要实现自己的电子邮件服务器。使用现有的并使用它的挂钩将邮件发送到您想要的任何地方,无论它是您想要的。

于 2009-07-01T02:53:26.143 回答
2

email_scheduler.c

int main()
{
        while(1){
                        sleep(5); // every 5 secs the email_parser.php would get executed.
                        system("/usr/bin/php -q /var/www/html/email_parser.php");
        }
}

email_parser.php:

/* 根据您的目的使用任何电子邮件消息解析器来解析电子邮件消息,例如 MIME 消息解析器:参考: http ://www.phpclasses.org/browse/package/3169.html */

另请在此处查看相关答案以获取更多信息

于 2009-07-01T15:10:45.410 回答
0

有一篇关于 Evolt 的旧(但很棒)文章关于将电子邮件传送到 php 脚本,因此可以获取电子邮件的全部内容并对其进行操作。

http://www.evolt.org/article/Incoming_Mail_and_PHP/18/27914/index.html

于 2010-04-20T10:52:40.067 回答