用PHP脚本发送电子邮件管道

时间:2011-04-08 06:52:48

标签: php email pipe command-line-interface

嗨'我想将所有电子邮件(来自我的收件箱)转发到php脚本并检索电子邮件内容并将其保存在文件中。所以,我正确地添加了带有管道路径的邮件转发器。

转发地址:tickets@ana.stage.centuryware.org

管道到程序:/home/centuryw/public_html/stage/ana/osticket/upload/api/pipe.php

我使用以下脚本作为pipe.php

#!/usr/bin/php –q
<?
/* Read the message from STDIN */
$fd = fopen("php://stdin", "r");
$email = ""; // This will be the variable holding the data.
while (!feof($fd)) {
    $email .= fread($fd, 1024);
}
fclose($fd);
/* Saves the data into a file */
$fdw = fopen("mail.txt", "w+");
fwrite($fdw, $email);
fclose($fdw);
/* Script End */

但是没有输出文件,所有电子邮件都会再次退回到我的收件箱。有人可以帮帮我吗?

5 个答案:

答案 0 :(得分:4)

确保PHP文件设置了执行位(即chmod +x pipe.php)。

答案 1 :(得分:3)

尝试以下两个选项进行检查:

  • 首先,你的php文件必须具有执行权限(至少来自所有者组),否则它将无效。

  • 您在使用货运代理时使用了什么?你还需要在beginnig上提到php编译器路径。

我最近写了一篇关于piping email content to php program完整详细过程的文章,您可能希望看看。如果您有任何疑问,请告诉我。感谢。

答案 2 :(得分:3)

我知道这个问题是2岁,但希望这会帮助任何像我一样偶然发现它的人。

我有完全相同的问题,我花了很多时间尝试记录错误等。然后我注意到我的脚本(和这个)有PHP短标签(即<?),我的PHP配置文件已经转了关闭。我将标签更改为<?php并且脚本有效!明显但容易错过......

答案 3 :(得分:0)

Chanaka -

这不解决为什么没有输出文件,但是......

您是否要在a+电话中使用fopen()w+参数将删除输出文件中已存在的任何内容。

PS:您是否尝试过使用虚拟文本(而不是电子邮件的输入)作为内容写入输出文件的简单测试?

杰夫科恩

答案 4 :(得分:-1)

如果这实际上是一个电子邮箱,为什么不使用IMAP (PHP)?有许多类可以使用imap @ phpclasses.org

来阅读邮件