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

首頁 > 編程 > PHP > 正文

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

2019-11-06 08:47:46
字體:
來源:轉載
供稿:網友

在項目開發過程中,經常會用到通過程序發送電子郵件,例如:注冊用戶通過郵件激活,通過郵件找回密碼,發送報表等。這里介紹幾種通過php發送電子郵件的方式(1)通過mail()函數發送郵件(2)使用fsockopen方式連接smtp服務器發送(3)使用phpmailer郵件類發送。個人推薦使用phpmailer郵件類發送,phpmailer比較方便使用且功能強大,接下來對這幾種方式分別做一下介紹。

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

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

使用mail函數時php.ini的配置

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

首先需要有一個smtp郵件服務器,可以自己搭建也可以使用網易,新浪等免費的郵件服務器,發送的過程大致如下:

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

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

<?php

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

include_once("class.smtp.php");$mail = new PHPMailer(true); //實例化PHPMailer類,true表示出現錯誤時拋出異常$mail->IsSMTP(); // 使用SMTPtry {  $mail->CharSet ="UTF-8";//設定郵件編碼  $mail->Host       = "smtp.163.com"; // SMTP server  $mail->SMTPDebug  = 1;// 啟用SMTP調試 1 = errors  2 =  messages  $mail->SMTPAuth   = true;// 服務器需要驗證  $mail->Port       = 25;//默認端口     $mail->Username   = "testuser"; //SMTP服務器的用戶帳號  $mail->PassWord   = "testpwd";//SMTP服務器的用戶密碼  $mail->AddReplyTo('****@com133.com', '回復'); //收件人回復時回復到此郵箱 $mail->AddAddress('****@test.com', '李明'); //收件人如果多人發送循環執行AddAddress()方法即可 還有一個方法時清除收件人郵箱ClearAddresses()$mail->SetFrom('li1209@163.com', '發件人');//發件人的郵箱$mail->Subject = '這里是郵件的標題';$mail->Body = '郵件內容';$mail->IsHTML(true);  $mail->Send();  echo "Message Sent OK";} catch (phpmailerException $e) {  echo $e->errorMessage();//從PHPMailer捕獲異常} catch (Exception $e) {  echo $e->getMessage();}?>    如果使用phpMailer發送html網頁只需添加代碼:  $body = file_get_contents('tpl.html'); //獲取html網頁內容  $mail->MsgHTML(eregi_replace("[/]",'',$body));注:使用MsgHTML()方法時發送的郵件內容不僅僅是html代碼,而且可以將html代碼中的圖片等內容作為附件嵌入到頁面中一起發送,這在發送圖文并茂的信息時比較常用。并且使用該方法時無需對Body屬性賦值也無需使用IsHTML()方法(即使使用也沒有效果)。    通過SSL安全連接發送郵件    目前很多郵箱使用SLL加密方式連接發信,例如谷歌的GMAIL目前只支持加密連接,網易、騰訊等服務商目前也支持SLL加密方式連接。SSL協議端口號通常是465(具體視服務商而定),如果通過SSL方式發送郵件只需增加一個屬性即可:     $mail->SMTPSecure = "ssl";         同時端口號更改為SSL的端口號,例如:     $mail->Port       = 465;     這樣就可以通過SSL協議發送郵件了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额尔古纳市| 扶余县| 廊坊市| 商南县| 聊城市| 六安市| 沛县| 邛崃市| 乳源| 定南县| 丰原市| 五大连池市| 宜城市| 东乡县| 确山县| 双鸭山市| 页游| 灵山县| 根河市| 那坡县| 道真| 萨嘎县| 房产| 永胜县| 罗田县| 达日县| 突泉县| 万盛区| 贵溪市| 宁阳县| 临桂县| 彭水| 定结县| 临江市| 孙吴县| 晋中市| 衡南县| 彭阳县| 思南县| 静海县| 东光县|