2009-12-11 58 views
3

有沒有辦法配置一個服務器或腳本來收到電子郵件時執行一個PHP腳本?發送電子郵件時,PHP應用程序可以運行嗎?

理論上,這可以擴展到其他協議,如XMPP或短信等

我心目中是一個用戶可以將消息發送到[email protected],這將觸發腳本然後會做無論需要做什麼,或者與信息無關(每當有其他信息發生時就會發送一個自動化信息,就像有問題的服務器一樣)或者與信息相關(比如它可以將主題存儲在其他用戶可以查看的數據庫中作爲RSS提要)。

我知道大多數列表服務軟件都有發送命令的方式(比如取消訂閱),但我不確定這個過程有多複雜,如果在服務器腳本級別上有這樣的東西是可行的。

這是否需要在IMAP/SMTP級別發生,還是可以靠近腳本或HTTP服務器來完成?

只是爲了給出一些上下文,我正在考慮的一件事是服務器中的一個基於消息的時鐘,用於我的一個工作站點。用戶可以通過即時消息/電子郵件/文本表明他們在他們的預定位置,這可能會觸發一個腳本來更新數據庫,而不是向管理員發送他們需要登錄的直接消息。這只是一種選擇(基於網絡的方法已經在開發中),但我們希望儘可能使其作爲平臺/協議獨立。但是如果我們能夠實現這一目標,我們可以考慮將其實施於其他日常需求。

另一種提問方式可能是:有沒有辦法從服務器腳本應用程序中「發現」用戶,或者是否需要對相關源進行常量檢查以查看此類更改?

+0

注意的是IMAP和SMTP都非常不同的野獸。我相信你的意思是:IMAP/POP3。 – jldupont 2009-12-11 04:06:06

+0

電子郵件,收到誰?知道用戶,在你的控制下?如果需要,請參閱通過過濾器回答管道,過濾器可以是CLI PHP腳本。 – Don 2009-12-11 06:22:54

回答

3

如果您控制自己的機器,則可以對其進行配置以通過過濾器來管理電子郵件。最簡單的方法是設置一個新帳戶並設置一個.forward或alias

以下示例適用於Sendmail,但所有?電子郵件程序均提供類似的服務。

設置了一個別名(選項1)

看在/ etc目錄服務器爲你的別名文件上。添加行:

腳本: 「| /path/toyourscript/pipe.php」

使用的.forward文件(選項2)

在你的主主目錄​​創建的.forward文件。

「| /path/toyourscript/pipe.php」

或:

[email protected]「| /路/ toyourscript /管。PHP的」

如果你是共享主機,然後大多數託管服務提供商還提供了方法可行‘通過一個腳本,而不是將它們存儲在郵箱中收到的某個特定帳戶管’的電子郵件。檢查的cPanel設置。

+0

我沒有對計算機的控制,但我必須創建一個前進檔爲來我的用戶賬號'melogin @ mail.example.org'任何消息的能力。所以我可能會是最好的選擇,或者至少是我的想法。如果推來推我可以請求去,我可以轉發一次,我已經證明了這一概念可行,也是值得的同一個目錄多個帳戶。我總是可以有更漂亮的電子郵件轉發給我的用戶帳戶,並啓動腳本。感謝您的想法! – Anthony 2009-12-11 08:50:29

3

使用cron作業通過pop3界面檢查電子郵件。如果找到「有趣」的郵件,請運行php腳本。

請注意,cron腳本也可以使用PHP。

+0

因爲我的項目是一個目錄本身被其他幾個部門共用一臺服務器上中的一處,我總是尋找最低調的方法。因此,我的直覺就是避免守護進程或cron工作,這將是一個持續運行的過程。但是兩個答案推動這個方向,我現在想知道如果我太保守,或者如果我只是要面對它,有沒有建立的東西,只有當外部源(如觸發運行的一個現實途徑電子郵件或短信)。 – Anthony 2009-12-11 08:46:01

1

正如jldupont說,這是很容易做到第i個PHP本身,簡單的用一個cronjob讀取SMTP時間可持續。

否則,你可以使用一個daemon,在蟒蛇的例子。

兩種方式都允許您做一件重要的事情:檢查電子郵件的發件人是否是您的用戶(您有我們ERS在DB,對吧?),或垃圾郵件機器人(nomatter什麼樣的使用,遲早反垃圾郵件,[email protected]會充滿垃圾郵件)

+0

PHP本身也是寫一個守護一個完美的候選人。 – stroop 2009-12-11 08:39:52

+0

+1爲垃圾郵件提醒。這是我完全忽略的噩夢。 – Anthony 2009-12-11 08:40:06

相關問題