2011-04-08 159 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