六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

使用php通過smtp發送郵件新手向導

[摘要]由于php沒有提供現成的smtp函數,卻提供了一個功能不甚靈活的mail()函數,這個函數需要服務器配置上的支持,并且不支持smtp驗證,在很多場合無法正常的工作,因此不建議使用。本文的目的在于為新手指明方向,并沒有涉及那些高級的內容,一來本身水平有限,二來也擔心不能準確的講述相關的概念,進而對各...
由于php沒有提供現成的smtp函數,卻提供了一個功能不甚靈活的mail()函數,這個函數需要服務器配置上的支持,并且不支持smtp驗證,在很多場合無法正常的工作,因此不建議使用。本文的目的在于為新手指明方向,并沒有涉及那些高級的內容,一來本身水平有限,二來也擔心不能準確的講述相關的概念,進而對各位造成誤導,還請自行深入學習。本文撰寫日期是2004年7月2日,閱讀時請注意時效性。

“使用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: [email protected]
250 Ok
RCPT TO: [email protected]
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: [email protected]”這個命令指明了發件地址是[email protected],“250 Ok”說明這條命令被服務器接受并正確執行,這類似http協議的200、404、500等狀態代碼。接下來的“RCPT TO: [email protected]”指明了收件地址是[email protected]
引用:
DATA
354 End data with <CR><LF>.<CR><LF>
teste
.

這一段是輸入郵件正文,輸入“DATA”以后系統提示使用“<回車>.<回車>”來結束輸入,正文內容是“teste”。
最后使用“QUIT”退出。

以上就是最簡單的一次發送mail的過程,從這個例子我們可以看出,發送mail其實是很簡單的事情,實質上也就是建立一個對smtp服務器的連接,然后發送一些簡單的命令給它,一封內容簡單的郵件就發送出去了,至于更加復雜內容的郵件或者操作,其實也就是在此基礎上稍加擴展而已。

把這個過程用php來實現,其實就是利用php的Socket functions、Network Functions等等操作socket的函數來和smtp服務器建立一個連接,然后發送文本的命令給服務器,如果你親自去看看那些寫好的利用smtp協議發送郵件的類或者函數,相信可以印證我的說法。

由于已經存在很多現成的封裝得很好的類或者函數替我們完成底層的socket級操作,我們只需要直接拿來用就好,而我也不會費時費神的在本文里去討論底層的代碼,有精神去研究的話,自己找代碼來研究吧。現在繼續跟我走,我們來點實際的代碼來說明如何使用php發送郵件,采用的類是PEAR::Mail。
代碼:
<?php
require_once 'Mail.php';

$conf['mail'] = array(
        'host'     => 'xx.xx.xx.xx',                //smtp服務器地址,可以用ip地址或者域名
        'auth'     => true,                         //true表示smtp服務器需要驗證,false代碼不需要
        'username' => 'tester',                     //用戶名
        'password' => 'retset'                      //密碼
);

/***
* 使用$headers數組,可以定義郵件頭的內容,比如使用$headers['Reply-To']可以定義回復地址
* 通過這種方式,可以很方便的定制待發送郵件的郵件頭
***/
$headers['From']    = '[email protected]';              //發信地址
$headers['To']      = '[email protected]';              //收信地址
$headers['Subject'] = 'test mail send by php';          //郵件標題
$mail_object = &Mail::factory('smtp', $conf['mail']);   

$body = <<< MSG                                         //郵件正文
hello world!!!
MSG;

$mail_res = $mail_object->send($headers['To'], $headers, $body);        //發送

if( Mail::isError($mail_res) ){                         //檢測錯誤
    die($mail_res->getMessage());
}
?>

以上的代碼非常的簡單,配合注釋應該不難看懂,關于PEAR和PEAR::Mail的更多信息,可以自己去翻閱PEAR Manual得到進一步的信息。

現在你依葫蘆畫瓢已經可以開始工作了,不過如果你還想做得更好、做得更多的話,我在這里提供一些更多的指南。

1、SMTP協議
熟悉并了解SMTP協議的內容,這樣你可以進行更多的高級操作,甚至自己寫一個滿足自己特別需求的發郵件程序。以上的代碼雖然簡單,但是肯定還是有很多人不了解注釋里提到的郵件頭是什么東西,它到底對發出的郵件有什么樣的影響。
比如“發送html郵件為什么對方看到的是亂碼”等等問題都可能和郵件頭相關,如果對smtp協議比較了解的話,可以很快的知道問題所在。
2、MIME規范
如果想要發送html郵件甚至多媒體郵件,一定是需要對MIME有一定了解的,有了這方面的知識你就可以發送內容更加精彩的郵件。
3、PEAR
PEAR并非唯一的發送郵件的工具,但是PEAR包含了Mail、Mail_Mime等等已經封裝好了的類,可以讓我們的開發事半功倍,并且除了Mail方面的東西以外,它還提供了很多其他方面的現成的工具,非常值得花時間學一學。




主站蜘蛛池模板: 欧美性视频在线 | 欧美污视频 | 亚洲国产精品久久久天堂麻豆 | 午夜丁香婷婷 | 五月婷婷色综合 | 天天干夜夜谢 | 亚洲高清免费在线观看 | 色婷婷一区二区三区四区成人网 | 亚洲系列中文字幕一区二区 | 日本成人片在线观看 | 日本亚欧乱色视频在线系列 | 性大特级毛片视频 | 亚洲国产成人久久精品影视 | 日韩精品免费在线观看 | 亚洲资源最新版在线观看 | 日韩中文字幕久久精品 | 欧美一级黄色片免费看 | 日韩 欧美 亚洲 国产 | 五月天婷婷丁香中文在线观看 | 怡春院日本一区二区久久 | 日韩精品导航 | 四虎影院永久网站 | 又粗又黄又猛又爽大片app | 色欧美片视频在线观看 | 依人在线视频 | 四虎精品永久在线 | 欧美午夜成年片在线观看 | 一二三中文乱码亚洲乱码 | 亚洲伊人久久大香线蕉在观 | 在线观看精品国产福利片100 | 欧美一级免费片 | 欧美影院一区二区三区 | 最近免费观看高清韩国日本大全 | 综合久久久久综合体桃花网 | 日韩不卡免费视频 | 亚洲视频大全 | 五月婷婷在线观看视频 | 亚洲最稳定资源在线观看 | 日本中出视频 | 青青国产成人久久91网站站 | 香蕉啪啪 |