收到新电子邮件时的PHP通知

时间:2009-12-24 03:45:43

标签: php email

当我收到任何发送到我的网络服务器上的特定电子邮件地址的电子邮件时,如何收到通知 例如,如果我的服务器上有一封电子邮件“replay@xx.com”,当我有任何电子邮件时,我想用PHP启动脚本吗?

谢谢

5 个答案:

答案 0 :(得分:2)

通常在Linux机器上,您可以将电子邮件发送到应用程序。你必须编写你的php脚本作为命令行应用程序。

无论哪种方式你真的不能单独使用php。

我不是百分百确定如何在收到邮件时将脚本中的任何电子邮件服务器发送出去,但我希望我能让你更接近你的答案。

答案 1 :(得分:2)

使用cronjobes,您将定期阅读使用IMAP / POP3的邮件,无论他们称之为什么。我写了一个类似的应用程序我会在几分钟内写下部分内容。 编辑:这是。 http://php.net/manual/en/function.imap-headerinfo.php

$m_mail = imap_open ("{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX", $m_username . "@gmail.com", $m_password)

// or throw a freakin error............you pig
or die("ERROR: " . imap_last_error());

// unix time gone by or is it bye.....its certanly not bi.......or is it? ......I dunno fooker
$m_gunixtp = array(2592000, 1209600, 604800, 259200, 86400, 21600, 3600, 5500);

// Date to start search
$m_gdmy = date("F j, Y, g:i a", "200901022");

echo $m_gdmy;

//search mailbox for unread messages since $m_t date
$m_search=imap_search ($m_mail, 'UNSEEN');

答案 2 :(得分:0)

提供电子邮件到您的网络服务器,是的。哎呀,即使他们去其他地方,并且其他地方可以打开到您的网络服务器的http连接,然后是。

答案 3 :(得分:0)

最简单的方法可能是使用库来访问邮件服务器并检查邮箱是否有新邮件,然后将其放入定期运行的脚本中。像this这样的东西可用于检查php中的邮箱。

答案 4 :(得分:0)

其他人暗示有两种方法:

1)配置邮件传递代理(或邮件传输代理)以通过过滤器路由传入邮件

2)预定作业轮询邮箱以查看新邮件是否已到达

第一种方法完全取决于你的MTA / MDA的配置方式 - 幸运的是你的服务器可能正在使用procmail,这是一个非常灵活的工具(通过拥有邮箱的用户的主目录中的文件.procmailrc配置) 。 e.g。

:0 * ^致:。* replay@xx.com *!FROM_DAEMON | / usr / bin / php -q /path/to/yourscript.php

然后在yourscript.php中阅读来自stdin的电子邮件

向第一行添加空格f(:0 f)并将副本写入stdout,如果您希望它也转到邮箱。请注意,您可以使用procmail配置很多内容。的! FROM_DAEMON应该消除大多数反馈循环。

如果没有,大多数MDA将支持使用用户主目录中的.forward文件通过过滤器进行路由。

把它放在文件中:

| / usr / bin / php -q /path/to/yourscript.php

请注意,本来发送到用户邮箱的所有邮件现在都将发送到邮箱的程序INSTEAD。如果您想恢复电子邮件,则需要在脚本中备份自己的传递代理或将邮件转发到其他地址。此外,您需要使用脚本处理退回以避免反馈循环。

下进行。