新聞中心
這篇文章給大家介紹利用php實(shí)現(xiàn)郵件發(fā)送功能的方法有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
一、使用PHP內(nèi)置的mail()函數(shù)
結(jié)果就直接報(bào)錯(cuò),如下:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() inD:/www/Zend/email/email.php on line 10
分析原因:本地需要有SMTP服務(wù)器,又改了下代碼:
結(jié)果還是錯(cuò)誤:
Warning: mail() [function.mail]: SMTP server response: 553 authentication is required,smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php on line 9
分析原因:需要驗(yàn)證信息,怎么寫(xiě)驗(yàn)證信息呢?在哪里配置呢?帶著這些疑問(wèn)參考一些技術(shù)文章后得出結(jié)論,使用mail()函數(shù)發(fā)送郵件就必須要有一臺(tái)無(wú)需SMTP驗(yàn)證就可以發(fā)信的郵件服務(wù)器。但現(xiàn)在的SMTP郵件服務(wù)器基本上都是需要驗(yàn)證的,所以要想使用它發(fā)郵件就只能自己在本地搭一個(gè)不需要驗(yàn)證的SMTP服務(wù)器。搭建方法:用windows自帶的IIS就可以,或者從網(wǎng)上下載其他的SMTP服務(wù)器軟件。
結(jié)論:使用mail()函數(shù)發(fā)送郵件,就必須要有一臺(tái)不需要驗(yàn)證的SMTP服務(wù)器。這樣的話配置工作會(huì)多一點(diǎn),但是使用的時(shí)候就比較省事了,幾行代碼就可以。
二、使用封裝SMTP協(xié)議的郵件類(lèi)
這種方法就比較常見(jiàn)了,尤其對(duì)于廣大自己沒(méi)有服務(wù)器,從網(wǎng)上購(gòu)買(mǎi)虛擬主機(jī)的同學(xué),第一種方法不現(xiàn)實(shí),所以還是自己使用SMTP協(xié)議來(lái)發(fā)送郵件吧。
不過(guò)要完成這項(xiàng)工作的話,就需要你對(duì)SMTP協(xié)議有一定的了解,喜歡事必躬親的同學(xué)可以自己動(dòng)手寫(xiě)一個(gè),喜歡拿來(lái)主義的同學(xué)就可以從網(wǎng)上下載了,有很多。
不過(guò)我比較推薦使用PEAR擴(kuò)展中的Mail類(lèi),功能強(qiáng)大:可以支持純文本、HTML格式的郵件;各字段都可設(shè)置編碼,正確配置不會(huì)出現(xiàn)中文亂碼情況;可以支持附件等等。
在服務(wù)器可以使用pear install Mail命令快速安裝,沒(méi)有足夠服務(wù)器權(quán)限的同學(xué)也可以直接下載類(lèi)的PHP源碼包含進(jìn)來(lái)就可以了。
注:Mail類(lèi)依賴(lài) Net/SMTP.php 和 Mail/mime.php ,要一塊下載,使用時(shí)一塊包含進(jìn)來(lái)。
下面我舉例說(shuō)明一下在Mail類(lèi)發(fā)送郵件的方法吧,網(wǎng)上其他SMTP郵件類(lèi)使用方法一塊也類(lèi)似,可以參考:
"; // 收件人顯示信息 $to = implode(',',$mailAddr); // 郵件標(biāo)題 $subject = "這是一封測(cè)試郵件"; // 郵件正文 $content = "隨便寫(xiě)點(diǎn)什么
"; // 郵件正文類(lèi)型,格式和編碼 $contentType = "text/html; charset=utf-8"; //換行符號(hào) Linux: \n Windows: \r\n $crlf = "\n"; $mime = new Mail_mime($crlf); $mime->setHTMLBody($content); $param['text_charset'] = 'utf-8'; $param['html_charset'] = 'utf-8'; $param['head_charset'] = 'utf-8'; $body = $mime->get($param); $headers = array(); $headers["From"] = $from; $headers["To"] = $to; $headers["Subject"] = $subject; $headers["Content-Type"] = $contentType; $headers = $mime->headers($headers); $smtp =& Mail::factory("smtp", $smtpinfo); $mail = $smtp->send($mailAddr, $headers, $body); $smtp->disconnect(); if (PEAR::isError($mail)) { //發(fā)送失敗 echo 'Email sending failed: ' . $mail->getMessage()."\n"; } else{ //發(fā)送成功 echo "success!\n"; }如果從網(wǎng)上找的SMTP類(lèi)都是高度封裝的,所以使用起來(lái)比上面會(huì)更簡(jiǎn)單,但使用方法都是比較相似的。
結(jié)論:這種方式發(fā)送郵件無(wú)需裝任何軟件,只需要包含進(jìn)來(lái)一個(gè)PHP類(lèi),然后多寫(xiě)幾行配置代碼,就可以了。并且網(wǎng)上有很多示例的代碼,很多時(shí)候只要復(fù)制過(guò)來(lái)然后修改個(gè)別的幾個(gè)參數(shù)就可以用了,所以會(huì)很方便,推薦使用此方法。
關(guān)于利用php實(shí)現(xiàn)郵件發(fā)送功能的方法有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)站題目:利用php實(shí)現(xiàn)郵件發(fā)送功能的方法有哪些-創(chuàng)新互聯(lián)
瀏覽路徑:http://ef60e0e.cn/article/ppcgd.html