2011-04-08 179 views
6

嗨'我想转发所有的电子邮件(这是来到我的收件箱)到PHP脚本和检索电子邮件内容并将其保存在一个文件中。因此,我正确地使用管道路径添加了邮件转发器。电子邮件管道与PHP脚本

地址来转发:[email protected]

管道的计划:/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 */ 

但有再次反弹到我的收件箱没有输出文件和所有的电子邮件。任何人都可以帮助我吗?

+0

我从来没有想过pipe'ing。感谢您在我的脑海中创建的进步:) – nerkn 2011-04-08 07:06:49

+0

我只是尝试将电子邮件转发到简单的PHP脚本,并将电子邮件内容写入文件。我可以使用Cpanel轻松添加邮件转发器。这不是一个愚蠢的想法。 – Chanaka 2011-04-08 08:11:32

回答

-1

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

+0

这是我的网络邮件地址,我希望将所有电子邮件转发到我的webmail地址的pipe.php脚本。我是使用Cpanel添加电子邮件转发器。 – Chanaka 2011-04-08 07:11:50

+0

网络邮件地址是电子邮件地址。然后创建一个将电子邮件读入数据库的脚本。在该脚本上设置一个cronjob。 – 2011-04-08 07:22:19

+4

轮询邮件比将其路由到脚本 – symcbean 2011-04-08 07:41:58

4

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

+0

是的效率低得多。我将文件权限设置为755 .... :(。脚本没有错误,但也没有输出文件(mail.txt) – Chanaka 2011-04-08 07:39:39

+0

您有权限写入该文件吗? – 2011-04-10 09:41:03

3

尝试以下2个选项检查:

  • 首先,你的PHP文件必须需要有执行权限(从所有者组至少),否则将无法正常工作。

  • 当您使用货代时您使用了什么?您还需要在beginnig中提及php编译器路径。

我最近写的关于piping email content to php program的全部细节过程的文章,你可能会想看看。如果您还有其他问题,请告诉我。谢谢。

0

Chanaka -

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

难道你不想在你的fopen()通话使用a+w+参数将删除输出文件中已存在的任何内容。

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

杰夫·科汉

3

我知道这个问题为2岁,但希望这将帮助任何人穿过它,因为我做了谁绊倒。

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

+0

OP似乎正在运行在Linux上的PHP框,你的观点不是vald – meda 2013-06-06 20:45:22

+1

@meda这是一个PHP设置文件的设置,它与操作系统无关。 – viniciusmunich 2016-07-22 18:54:00