2015-11-27 53 views
0

目前我正在用cPanel管理郵箱。我在cPanel中配置郵箱,將郵件傳送到PHP腳本。我使用cPanel只是爲了這個目的,所以我想擺脫所有的裝備。如何創建基於PHP的電子郵件系統?

所有我需要的是:

  • 創建一個電子郵件服務器(在這裏,我想我需要一些PHP庫/應用)
  • 在電子郵件服務器
  • 創建一個電子郵件帳戶/郵箱爲通過郵箱收到的每封電子郵件:運行PHP腳本處理的字節

These PHP extensions依靠preexistant電子郵件服務器和帳號上,因此,僅僅這些是不夠的。

從我一直在研究,顯然我需要通過PHP命令行,CLI或CGI,不知道哪一個。

我在LAMP CentOS的VPS工作,也許有一個開源的PHP應用程序或庫,可以在這裏實現,只是爲了特定的任務。

+0

你是什麼意思的「預先存在的電子郵件帳戶/郵箱」? 「使用PHP創建電子郵件帳戶/郵箱」是什麼意思?當然,典型的應用程序不會訪問某些現有的郵箱,因爲在php中實現所有服務器的東西沒有多大意義!所以通常你依靠一臺服務器接收郵件並訪問這些郵件。也許你想更清楚你究竟想要做什麼。 – arkascha

+0

@arkascha編輯了上下文,儘管你引用的內容仍然完好無損,因爲它現在更有意義。 – mikl

回答

4

很抱歉這麼說,但你打算做沒有任何意義的東西。

原因:

爲了能夠接收和訪問電子郵件,你就必須實現至少一個完全成熟的網絡服務器:一個SMTP服務器來接收,要麼額外的服務器訪問郵箱,像IMAP4服務器或類似的。加上所有的開銷爲SSL或TLS加密,身份驗證,和和......

  • PHP不是一種非常適合這樣的項目的語言。
  • 這樣的計劃手段的工作量目前可能被您低估了。如果你看看現有的實現,你會發現它們都是非常龐大而複雜的軟件包。如果不是幾年,我會說實施這麼多的東西將會花費一個非常好的程序員。

請不要誤解,但我的印象是,您還沒有完全理解電子郵件交換實際上是如何工作的以及需要做什麼。

相反,我建議你通過掌握一些可以使用的獨立系統,也許是租用的虛擬專用服務器,包括域名和靜態IP地址,來進入該領域。請注意,一些網站空間與PHP是而不是足夠。然後你安裝典型的軟件包,一些Linux操作系統,可能是Postfix SMTP服務器,Dovecot IMAP服務器以及它們所需的一切。然後,你配置這些東西,如果你真的成功,並能夠通過該設置實際接收消息,然後是時候回到這個問題。我期望兩件事情:

  1. 您將瞭解通過實驗比較了很多,
  2. 你會同意,你目前的計劃是沒有意義的。
+0

我不想寫全部東西。也許有一個開源的PHP庫/應用程序用於創建服務器 - >帳戶 - >接收電子郵件的特定任務,甚至不需要解析電子郵件,因爲我得到的字節串我很好去。也許我不知道我在說什麼,但必須做最後的嘗試。 – mikl

+0

@mikl我不知道這樣的「庫」,我懷疑有這樣的事情出於同樣的原因:PHP不是一種適合這樣的任務的語言。這根本沒有意義。 – arkascha

1

用於閱讀郵箱中的電子郵件我建議使用IMAP。 這裏的電子郵件存儲在服務器上,IMAP協議允許您訪問服務器上的電子郵件。

您必須在服務器上啓用IMAP,並使用imap_open功能[1]

這從php.net採取的一個例子是在這裏:

<?php 
$mbox = imap_open("{imap.example.org:143}", "username", "password"); 

echo "<h1>Mailboxes</h1>\n"; 
$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*"); 

if ($folders == false) { 
    echo "Call failed<br />\n"; 
} else { 
    foreach ($folders as $val) { 
     echo $val . "<br />\n"; 
    } 
} 

echo "<h1>Headers in INBOX</h1>\n"; 
$headers = imap_headers($mbox); 

if ($headers == false) { 
    echo "Call failed<br />\n"; 
} else { 
    foreach ($headers as $val) { 
     echo $val . "<br />\n"; 
    } 
} 

imap_close($mbox); 
?> 

在創建新帳戶而言,如果你有一個用於在郵件服務器上創建帳戶的HTML輸入表單,一個非常冒險的解決方案是使用PHP cURL提交POST變量來創建一個新帳戶,這是一個很好的關於這個主題的stackoverflow答案[2]。

當您在註冊表單上提交信息時,您基本上正在提交一系列POST變量。如果您不熟悉cURL或HTTP請求的基礎知識,則可能需要閱讀。

這可能涉及使用cURL登錄到您爲郵件服務器設置的任何管理框架的管理面板。如果您是相關郵件服務器上的root用戶,則有更好的解決方案。

[1] http://php.net/manual/en/function.imap-open.php

[2] Passing $_POST values with cURL

+0

對不起,已編輯的問題。雖然你仍然在回答它的重要部分,但是我最感興趣的部分是如何創建電子郵件服務器,因爲正如我所提到的,我需要擺脫cPanel,當然,我不會開始使用Gmail或任何東西,因爲它會是一樣的:很多複雜性和功能我不需要,因爲我只需要接收電子郵件並使用PHP處理字節。 – mikl

+0

你有權訪問有問題的服務器嗎? 如果這是共享主機,那麼你將無法擺脫cpanel。 Gmail未安裝在服務器上,服務器會將電子郵件轉發到gmail服務器,然後可以通過登錄到gmail 訪問此處,請參閱https://apps.google.com/intx/zh_CN/products/gmail/ – par

+0

@ParsaAkbani我有root權限。但事情是我必須創建和管理很多不同的電子郵件帳戶,它不只是一個帳戶,每個帳戶都將管道電子郵件發送到不同的腳本。另一方面,如果我創建自己的電子郵件服務器,那麼使用Gmail帳戶可能會比使用cPanel(僱用一個更多的外部服務)複雜得多或者更復雜,最終它會比其他兩個選項複雜得多。現在我正在考慮保持cPanel,但使用PHP自動創建和配置帳戶,否則我現在只需要處理cPanel GUI。 – mikl