用PHP通過(guò)SMTP發(fā)送郵件(2)_PHP教程
推薦:PHP開(kāi)發(fā)中接收復(fù)選框信息的方法PHP接收多個(gè)同名復(fù)選框信息不像ASP那樣自動(dòng)轉(zhuǎn)換成為數(shù)組,這給使用帶來(lái)了一定不便。但是還是有解決辦法的,就是利用javascript做一下預(yù)處理。多個(gè)同名復(fù)選框在javascript中還是以數(shù)組的形式存在
以上就是最簡(jiǎn)單的一次發(fā)送mail的過(guò)程,從這個(gè)例子我們可以看出,發(fā)送mail其實(shí)是很簡(jiǎn)單的事情,實(shí)質(zhì)上也就是建立一個(gè)對(duì)smtp服務(wù)器的連接,然后發(fā)送一些簡(jiǎn)單的命令給它,一封內(nèi)容簡(jiǎn)單的郵件就發(fā)送出去了,至于更加復(fù)雜內(nèi)容的郵件或者操作,其實(shí)也就是在此基礎(chǔ)上稍加擴(kuò)展而已。
把這個(gè)過(guò)程用php來(lái)實(shí)現(xiàn),其實(shí)就是利用php的Socket functions、Network Functions等等操作socket的函數(shù)來(lái)和smtp服務(wù)器建立一個(gè)連接,然后發(fā)送文本的命令給服務(wù)器,如果你親自去看看那些寫(xiě)好的利用smtp協(xié)議發(fā)送郵件的類(lèi)或者函數(shù),相信可以印證我的說(shuō)法。
由于已經(jīng)存在很多現(xiàn)成的封裝得很好的類(lèi)或者函數(shù)替我們完成底層的socket級(jí)操作,我們只需要直接拿來(lái)用就好,而我也不會(huì)費(fèi)時(shí)費(fèi)神的在本文里去討論底層的代碼,有精神去研究的話(huà),自己找代碼來(lái)研究吧�,F(xiàn)在繼續(xù)跟我走,我們來(lái)點(diǎn)實(shí)際的代碼來(lái)說(shuō)明如何使用php發(fā)送郵件,采用的類(lèi)是PEAR::Mail。
代碼:
<?php
require_once 'Mail.php';
$conf['mail'] = array(
'host' => 'xx.xx.xx.xx', //smtp服務(wù)器地址,可以用ip地址或者域名
'auth' => true, //true表示smtp服務(wù)器需要驗(yàn)證,false代碼不需要
'username' => 'tester', //用戶(hù)名
'password' => 'retset' //密碼
);
/***
* 使用$headers數(shù)組,可以定義郵件頭的內(nèi)容,比如使用$headers['Reply-To']可以定義回復(fù)地址
* 通過(guò)這種方式,可以很方便的定制待發(fā)送郵件的郵件頭
***/
$headers['From'] = '[email protected]'; //發(fā)信地址
$headers['To'] = '[email protected]'; //收信地址
$headers['Subject'] = 'test mail send by php'; //郵件標(biāo)題
$mail_object = &Mail::factory('smtp', $conf['mail']);
$body = <<< MSG //郵件正文
hello world!!!
MSG;
$mail_res = $mail_object->send($headers['To'], $headers, $body); //發(fā)送
if( Mail::isError($mail_res) ){ //檢測(cè)錯(cuò)誤
die($mail_res->getMessage());
}
?>
以上的代碼非常的簡(jiǎn)單,配合注釋?xiě)?yīng)該不難看懂,關(guān)于PEAR和PEAR::Mail的更多信息,可以自己去翻閱PEAR Manual得到進(jìn)一步的信息。
現(xiàn)在你依葫蘆畫(huà)瓢已經(jīng)可以開(kāi)始工作了,不過(guò)如果你還想做得更好、做得更多的話(huà),我在這里提供一些更多的指南。
1、SMTP協(xié)議
熟悉并了解SMTP協(xié)議的內(nèi)容,這樣你可以進(jìn)行更多的高級(jí)操作,甚至自己寫(xiě)一個(gè)滿(mǎn)足自己特別需求的發(fā)郵件程序。以上的代碼雖然簡(jiǎn)單,但是肯定還是有很多人不了解注釋里提到的郵件頭是什么東西,它到底對(duì)發(fā)出的郵件有什么樣的影響。
比如“發(fā)送html郵件為什么對(duì)方看到的是亂碼”等等問(wèn)題都可能和郵件頭相關(guān),如果對(duì)smtp協(xié)議比較了解的話(huà),可以很快的知道問(wèn)題所在。
2、MIME規(guī)范
如果想要發(fā)送html郵件甚至多媒體郵件,一定是需要對(duì)MIME有一定了解的,有了這方面的知識(shí)你就可以發(fā)送內(nèi)容更加精彩的郵件。
3、PEAR
PEAR并非唯一的發(fā)送郵件的工具,但是PEAR包含了Mail、Mail_Mime等等已經(jīng)封裝好了的類(lèi),可以讓我們的開(kāi)發(fā)事半功倍,并且除了Mail方面的東西以外,它還提供了很多其他方面的現(xiàn)成的工具,非常值得花時(shí)間學(xué)一學(xué)。
分享:PHP中使用XML-RPC構(gòu)造Web Service簡(jiǎn)單入門(mén)[ Web Service介紹 ] Web Service就是為了異構(gòu)系統(tǒng)的通信而產(chǎn)生的,它基本的思想就是使用基于XML的HTTP的遠(yuǎn)程調(diào)用提供一種標(biāo)準(zhǔn)的機(jī)制,而省去建立一種新協(xié)議的需求。目前進(jìn)行Web Service
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪(fǎng)問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶(hù)端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-用PHP通過(guò)SMTP發(fā)送郵件(2)
。