使用PHP通過SMTP發送郵件新手指南
來源:程序員人生 發布時間:2014-02-05 02:07:49 閱讀次數:3468次
由于php沒有提供現成的smtp函數,卻提供了一個功能不甚靈活的mail()函數,這個函數需要服務器配置上的支持,并且不支持smtp驗證,在很多場合無法正常的工作,因此不建議使用。本文的目的在于為新手指明方向,并沒有涉及那些高級的內容,一來本身水平有限,二來也擔心不能準確的講述相關的概念,進而對各位造成誤導,還請自行深入學習。
“使用php發送mail”最近已經成為繼“register_globals”以后本版第二個新手陷阱,今天特地寫這篇文章為新手解惑,希望可以為迷茫的人指明方向。
讓我們先從以下這個例子開始說起,引用:
- [root@server~/]# telnet localhost 25
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- 220 server.domain.com.br ESMTP Postfix (2.1.0)
- MAIL FROM: teste@dominio.com.br
- 250 Ok
- RCPT TO: teste@dominio.com.br
- 250 Ok
- DATA
- 354 End data with <CR><LF>.<CR><LF>
- teste
- .
- 250 Ok: queued as 7B41F4665A
- QUIT
- 221 Bye
- Connection closed by foreign host.
注:以上來自netkiller的postfix文檔,偷懶,直接用現成的,首先是使用telnet來連接本地的25端口,稍微熟悉點網絡的人都知道smtp協議使用25端口,這也就是說,現在在連接本地的smtp服務器,引用:
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- 220 server.domain.com.br ESMTP Postfix (2.1.0)
這些東西是系統輸出信息,說明已經連接上了,而且這個smtp服務器是postfix做的。
- “MAIL FROM: teste@dominio.com.br”這個命令指明了發件地址是teste@dominio.com.br,“250 Ok”說明這條命令被服務器接受并正確執行,這類似http協議的200、404、500等狀態代碼。接下來的“RCPT TO: teste@dominio.com.br”指明了收件地址是teste@dominio.com.br。
- 引用:
- DATA
- 354 End data with <CR><LF>.<CR><LF>
- teste
- .
這一段是輸入郵件正文,輸入“DATA”以后系統提示使用“<回車>.<回車>”來結束輸入,正文內容是“teste”,最后使用“QUIT”退出。
以上就是最簡單的一次發送mail的過程,從這個例子我們可以看出,發送mail其實是很簡單的事情,實質上也就是建立一個對smtp服務器的連接,然后發送一些簡單的命令給它,一封內容簡單的郵件就發送出去了,至于更加復雜內容的郵件或者操作,其實也就是在此基礎上稍加擴展而已.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈