首頁 > 後端開發 > php教程 > php發送郵件二種方法 php使用smtp發送郵件

php發送郵件二種方法 php使用smtp發送郵件

WBOY
發布: 2016-07-30 13:31:51
原創
1233 人瀏覽過

原文:http://www.jbxue.com/php/25502.html
本文介紹了php發送郵件的兩種方法,分別是使用PHP內建的mail()函數發送郵件,使用封裝SMTP協定的郵件類發送郵件,推薦使用smtp協定封裝的郵件類實作郵件發送。

php如何寄送郵件呢?方法有很多,但用的最多的還是使用smtp協定來發送郵件,一起來學習下吧。
專題推薦:php發送郵件程式碼大全

一、使用php內建的mail()函數
 

複製程式碼 程式碼範例:63$ "; //收件者 

$subject = "Test"; //主體 

$message = "This is a test mail!"; //正文 
mail($to,$subject,$message); 

直接報錯:
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伺服器,程式碼修改為:
 


複製程式碼

程式碼範例:$subject = "Test";//郵件主旨 

$message = "This is a test mail!";//郵件正文 

ini_set('SMTP','smtp.163.com') ;//寄件SMTP伺服器 
ini_set('smtp_port',25);//寄件SMTP伺服器連接埠 
ini_set('sendmail_from',"admin@163.com");//寄件者信箱 
mail($to,$subject,$message); 

繼續錯誤:
Warning: mail() [function.mail]: SMTP server response: 553 authentication is required,smtp2,DNGowKD7v5BTDo9NnplVBA--.1171S2 1301220947 inD:/www/Zend/email/email.php on line 9

需要驗證資訊,怎麼寫驗證資訊?在哪裡配置呢?


使用mail()函數傳送郵件就必須要有一台無需SMTP驗證就可以寄信的郵件伺服器。但現在的SMTP郵件伺服器基本上都是需要驗證的,所以要使用它寄郵件就只能自己在本地搭一個不需要驗證的SMTP伺服器。

結論:使用mail()函數傳送郵件,就必須要有一台不需要驗證的SMTP伺服器。

二、使用封裝SMTP協定的郵件類別

建議使用SMTP協定來傳送郵件。

比較建議使用PEAR擴充功能中的Mail類,功能強大:可以支援純文字、HTML格式的郵件;各欄位都可設定編碼,正確配置不會出現中文亂碼情況;可以支援附件等等。


在伺服器可以使用 pear install Mail 指令快速安裝,沒有足夠伺服器權限的同學也可以直接下載類別的PHP原始碼包含進來就可以了。

註:Mail類別依賴  Net/SMTP.php  和 Mail/mime.php ,要一塊下載,使用時一塊包含進來。

詳細安裝方法可以在官網查看,http://pear.php.net/package/Mail。

例子,Mail類別發送郵件的方法。

 


複製程式碼

程式碼範例:

// Pear Mail 擴充 
require_once('Mail.php'); 
require_once('Mail/mime.php'); 
require_once('info/SMTP.php'); (); 
$smtpinfo["host"] = "smtp.163.com";//SMTP伺服器 
$smtpinfo["port"] = "25"; //SMTP伺服器連接埠 
$smtpinfo["username"] = "username@163.com"; //寄件者信箱 
$smtpinfo["password"] = "password";//寄件者信箱密碼 
$smtpinfo["timeout"] = 10;//網路逾時時間,秒 
$smtpinfo["auth"] = true;//登入驗證 
//$smtpinfo["debug"] = true;//偵錯模式 
 
// 收件者清單
$mail' receiver@163.com'); 
 
// 寄件者顯示訊息 
$from = "Name "; 
 
// 顯示訊息 
($)'t6 ,$mailAddr); 
 
// 郵件標題 
$subject = "這是一封測試郵件"; 
 
// 郵件正文 
// 郵件內文類型,格式與編碼 
$contentType = "text/html; charset=utf-8"; 
 
//換行符號Linux: n  Windows: rn 
=$crlf = "n"; 
$mi
$mi = new Mail_mime($crlf); 
$mime->setHTMLBody($content); 
 
$param['text_charset'] = 'utf-8'; 
$param['html_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); $mail = $smtp->send($mailAddr, $headers, $body);  🎠 tp);
 
if (PEAR::isError($mail)) { 
    //發送失敗 
    echo 'Email sending failed: ' . $mail->getMessage()."n";
    echo "success!n"; 
}

以上就介紹了php發送郵件二種方法 php使用smtp發送郵件,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板