2011-05-02 62 views
0

是否有庫/類/代碼片段/等。允許我直接在PHP中接收郵件?用於接收郵件的MTA,用PHP

因此,我不必在其他進程中運行額外的服務器,然後必須以某種方式將郵件發送到已經運行的php進程。

我一直在尋找一段時間,但谷歌上的「php」和「mail」或「mta」/「smtp」的結果主要集中在發送郵件或使用pop3或imap檢索它。

[編輯]

我想要做的就是轉發消息給IRC通道,所以很明顯,當IRC-BOT(在PHP)未運行,丟失的郵件是不是大不了。然而,在接收郵件並將其發佈到IRC之間的延遲是低的。

回答

1

編寫自己的SMTP服務器充當MTA是一項艱鉅的任務。你可以看看http://cloudmailin.com。 CloudMailin允許您將收到的電子郵件作爲HTTP Post發送,並充當將MTA直接發送到您的PHP應用程序的MTA。PHP應用程序然後可以處理電子郵件並將其發送到IRC頻道。

+0

不幸的是,像這樣的東西並不存在作爲軟件安裝在您自己的機器上。但是,謝謝! – Dexter 2011-05-07 16:13:18

0

試試這個:谷歌搜索http://www.php.net/manual/en/refs.remote.mail.php

10秒。 SMTP是用於郵件中繼的,儘管它是郵件客戶端發送郵件的事實協議,這是由於每個運行SMTP郵件中繼的盒子的Unix傳統。

POP3和IMAP提供郵件客戶端訪問郵件。

+0

這是與現有的MTA交互的東西......它不是一個替代品。 – 2011-05-02 19:27:40

+0

這就是SMTP指定的內容:如何與其他STMP服務器交互。 – 2011-05-02 19:28:55

+0

這裏沒有任何東西可以接收郵件。 – Dexter 2011-05-02 20:14:59

0

MTA(郵件傳輸代理)是用於將郵件從一個位置移動到另一個位置的應用程序(即sendmail,exim)。據我所知,在PHP中沒有MTA編碼。 PHP提供了處理郵件傳輸的類和腳本,但它仍然通過現有的MTA進行處理。

您應該能夠配置MTA以通過給定的PHP腳本傳遞郵件來完成您正在尋找的內容。

2

我從來沒有在PHP中見過競爭的SMTP服務器,它並沒有讓我感到意外。我認爲你不想走那條路。我能想到的另外兩種方式來做到這一點:

  1. 使用的procmail(或相似)與您現有的SMTP服務器,使這些消息轉發給您的PHP腳本的規則。很簡單,它會在收到消息的瞬間觸發腳本。

  2. 將郵件發送到某個現有郵箱,然後讓您的PHP腳本持續對其進行輪詢(通過POP或IMAP)以獲取新郵件。當您看到新消息時,將其傳遞給IRC並將其刪除。郵件顯示所需時間取決於您對收件箱進行輪詢的頻率。

+0

用於procmail。如果您正在使用現有的電子郵件帳戶,fetchmail> procmail> PHP是一個簡單而有效的流程。 – Schwartzie 2011-05-02 20:20:11

1

編寫自己的SMTP服務器是一項艱鉅的任務。不要走這條路。你會浪費大量的時間來複制已經完成的工作。選擇一個'大'的SMTP服務器(postfix,exim,sendmail等),然後去做。

不要以爲只是設置一個小小的腳本來聽25端口就可以了。 SMTP服務器是令人難以置信的複雜的野獸,並建立該端口25插座的機制可能佔用小於0.00000000000000000000000000000000001%的工作。 (這個數字是完全正確的,我問我的直覺是什麼感覺,那是什麼出來)。

+0

選擇其中一個大型服務器也是很多工作。特別是當你需要弄清楚如何配置它們來做非標準的東西時,比如發送郵件到一個php腳本。我認爲有一個簡單的腳本監聽端口25不會那麼糟糕... – Dexter 2011-05-02 20:17:49

+0

將郵件發送到PHP腳本與創建用戶一樣簡單,並將.forward放入該用戶的主目錄以將郵件傳送到腳本。所有主要的SMTP服務器都直接支持。 – 2011-05-02 21:30:43