嗨'我想将所有电子邮件(来自我的收件箱)转发到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 */
但是没有输出文件,所有电子邮件都会再次退回到我的收件箱。有人可以帮帮我吗?
答案 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
来阅读邮件