国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

使用php發(fā)送電子郵件(phpmailer)

2019-11-06 08:47:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)用到通過(guò)程序發(fā)送電子郵件,例如:注冊(cè)用戶(hù)通過(guò)郵件激活,通過(guò)郵件找回密碼,發(fā)送報(bào)表等。這里介紹幾種通過(guò)php發(fā)送電子郵件的方式(1)通過(guò)mail()函數(shù)發(fā)送郵件(2)使用fsockopen方式連接smtp服務(wù)器發(fā)送(3)使用phpmailer郵件類(lèi)發(fā)送。個(gè)人推薦使用phpmailer郵件類(lèi)發(fā)送,phpmailer比較方便使用且功能強(qiáng)大,接下來(lái)對(duì)這幾種方式分別做一下介紹。

        (1)通過(guò)mail()函數(shù)發(fā)送郵件    PHP中的mail() 函數(shù)允許從腳本中直接發(fā)送電子郵件,格式:    mail($to,$subject,$message,$headers,$parameters);    to 必需。規(guī)定郵件的接收者。     subject 必需。規(guī)定郵件的主題。該參數(shù)不能包含任何換行字符。     message 必需。規(guī)定要發(fā)送的消息。     headers 可選。規(guī)定額外的報(bào)頭,比如 From(發(fā)件人), Cc(抄送) 以及 Bcc(密送)。     parameters 可選。規(guī)定 sendmail 程序的額外參數(shù)。

         需要特別mail()函數(shù)用法相當(dāng)簡(jiǎn)單,但并不我們使用mail()函數(shù)就可以直接發(fā)送郵件了,需要我們做一些配置,在Windows與linux系統(tǒng)上的配置方式有些不同。我們發(fā)送郵件需郵件服務(wù)器,如果是Linux服務(wù)器需要在php.ini中的sendmail_path設(shè)置為服務(wù)器的路徑,如果Linux在安裝時(shí)安裝了sendmail,可以這樣設(shè)置:    sendmail_path = /usr/sbin/sendmail如果安裝的是Qmail等其他Mail服務(wù)器則填寫(xiě)對(duì)應(yīng)的路徑即可。如果是Windwos操作系統(tǒng)則需要配置SMTP和smtp_port著兩個(gè)參數(shù),例如:    SMTP = localhost    smtp_port = 25如果將SMTP設(shè)置為localhost則本機(jī)必須安裝郵件服務(wù)器才能正常發(fā)信,當(dāng)然也可以設(shè)置其他郵件服務(wù)器的域名或ip地址,還有一個(gè)可選參數(shù)是sendmail_from可以設(shè)置默認(rèn)的發(fā)件人郵箱。看一下php.ini的配置項(xiàng):

使用mail函數(shù)時(shí)php.ini的配置

(2)使用fsockopen方式連接smtp服務(wù)器發(fā)送

首先需要有一個(gè)smtp郵件服務(wù)器,可以自己搭建也可以使用網(wǎng)易,新浪等免費(fèi)的郵件服務(wù)器,發(fā)送的過(guò)程大致如下:

    1.建立TCP連接    2.客戶(hù)端發(fā)送HELO命令以標(biāo)識(shí)發(fā)件人自己的身份,然后客戶(hù)端發(fā)送MAIL命令,服務(wù)器端正希望以O(shè)K作為響應(yīng),表明準(zhǔn)備接收    3.客戶(hù)端發(fā)送RCPT命令,以標(biāo)識(shí)該電子郵件的計(jì)劃接收人,可以有多個(gè)RCPT行,服務(wù)器端則表示是否愿意為收件人接受郵件    4.協(xié)商結(jié)束,發(fā)送郵件,用命令DATA發(fā)送    目前絕大多數(shù)的服務(wù)商都提供SMTP服務(wù),如果我們要使用的MTA需要用戶(hù)認(rèn)證(絕大多數(shù)的郵件服務(wù)商都需要認(rèn)證)那就需要我們使用有效的用戶(hù)名密碼登陸。以網(wǎng)易的163郵箱為例,首先注冊(cè)一個(gè)郵箱賬號(hào)比如:mytest@163.com,這里我們使用一個(gè)寫(xiě)好的email.class.php來(lái)實(shí)現(xiàn)與SMTP服務(wù)器實(shí)現(xiàn)通信并發(fā)送郵件的功能,使用前需要在配置文件config.php中配置一下各項(xiàng)參數(shù),詳細(xì)說(shuō)明可以參考附件中的示例代碼。

(3)使用phpMailer郵件類(lèi)發(fā)送電子郵件(特別推薦)     先來(lái)幾句廢話:    phpMailer是一個(gè)非常強(qiáng)大的php發(fā)送郵件類(lèi),可以設(shè)定發(fā)送郵件地址、回復(fù)地址、郵件主題、html網(wǎng)頁(yè),上傳附件,并且使用起來(lái)非常方便。     phpMailer的特點(diǎn):    1、在郵件中包含多個(gè) TO、CC、BCC 和 REPLY-TO。    2、平臺(tái)應(yīng)用廣泛,支持的 SMTP 服務(wù)器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。    3、支持嵌入圖像,附件,HTML 郵件。    4、可靠的強(qiáng)大的調(diào)試功能。    5、支持 SMTP 認(rèn)證。    6、自定義郵件頭。    7、支持 8bit、base64、binary 和 quoted-PRintable 編碼。    使用phpMailer發(fā)送郵件需要class.phpmailer.php和class.smtp.php兩個(gè)文件,比較簡(jiǎn)單的代碼片段:

<?php

require_once('./class.phpmailer.php');

include_once("class.smtp.php");$mail = new PHPMailer(true); //實(shí)例化PHPMailer類(lèi),true表示出現(xiàn)錯(cuò)誤時(shí)拋出異常$mail->IsSMTP(); // 使用SMTPtry {  $mail->CharSet ="UTF-8";//設(shè)定郵件編碼  $mail->Host       = "smtp.163.com"; // SMTP server  $mail->SMTPDebug  = 1;// 啟用SMTP調(diào)試 1 = errors  2 =  messages  $mail->SMTPAuth   = true;// 服務(wù)器需要驗(yàn)證  $mail->Port       = 25;//默認(rèn)端口     $mail->Username   = "testuser"; //SMTP服務(wù)器的用戶(hù)帳號(hào)  $mail->PassWord   = "testpwd";//SMTP服務(wù)器的用戶(hù)密碼  $mail->AddReplyTo('****@com133.com', '回復(fù)'); //收件人回復(fù)時(shí)回復(fù)到此郵箱 $mail->AddAddress('****@test.com', '李明'); //收件人如果多人發(fā)送循環(huán)執(zhí)行AddAddress()方法即可 還有一個(gè)方法時(shí)清除收件人郵箱ClearAddresses()$mail->SetFrom('li1209@163.com', '發(fā)件人');//發(fā)件人的郵箱$mail->Subject = '這里是郵件的標(biāo)題';$mail->Body = '郵件內(nèi)容';$mail->IsHTML(true);  $mail->Send();  echo "Message Sent OK";} catch (phpmailerException $e) {  echo $e->errorMessage();//從PHPMailer捕獲異常} catch (Exception $e) {  echo $e->getMessage();}?>    如果使用phpMailer發(fā)送html網(wǎng)頁(yè)只需添加代碼:  $body = file_get_contents('tpl.html'); //獲取html網(wǎng)頁(yè)內(nèi)容  $mail->MsgHTML(eregi_replace("[/]",'',$body));注:使用MsgHTML()方法時(shí)發(fā)送的郵件內(nèi)容不僅僅是html代碼,而且可以將html代碼中的圖片等內(nèi)容作為附件嵌入到頁(yè)面中一起發(fā)送,這在發(fā)送圖文并茂的信息時(shí)比較常用。并且使用該方法時(shí)無(wú)需對(duì)Body屬性賦值也無(wú)需使用IsHTML()方法(即使使用也沒(méi)有效果)。    通過(guò)SSL安全連接發(fā)送郵件    目前很多郵箱使用SLL加密方式連接發(fā)信,例如谷歌的GMAIL目前只支持加密連接,網(wǎng)易、騰訊等服務(wù)商目前也支持SLL加密方式連接。SSL協(xié)議端口號(hào)通常是465(具體視服務(wù)商而定),如果通過(guò)SSL方式發(fā)送郵件只需增加一個(gè)屬性即可:     $mail->SMTPSecure = "ssl";         同時(shí)端口號(hào)更改為SSL的端口號(hào),例如:     $mail->Port       = 465;     這樣就可以通過(guò)SSL協(xié)議發(fā)送郵件了。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 台南市| 古田县| 绵阳市| 瑞安市| 甘谷县| 攀枝花市| 广元市| 古田县| 阜康市| 上犹县| 巴青县| 鄂伦春自治旗| 金溪县| 桑植县| 宁强县| 八宿县| 和林格尔县| 临邑县| 通江县| 公安县| 如皋市| 新疆| 抚州市| 中超| 普宁市| 云和县| 资中县| 嘉定区| 平凉市| 呼伦贝尔市| 蓝田县| 满城县| 南岸区| 应城市| 东辽县| 阿拉善盟| 东乡族自治县| 龙南县| 连山| 云梦县| 柞水县|