91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用php實現郵件發送功能的方法有哪些

發布時間:2020-12-11 16:40:29 來源:億速云 閱讀:164 作者:Leah 欄目:開發技術

這篇文章給大家介紹利用php實現郵件發送功能的方法有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、使用PHP內置的mail()函數

<?php 
$to = "test@163.com"; //收件人 
$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服務器,又改了下代碼:

<?php 
$to = "test@163.com";//收件人 
$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服務器。搭建方法:用windows自帶的IIS就可以,或者從網上下載其他的SMTP服務器軟件。

結論:使用mail()函數發送郵件,就必須要有一臺不需要驗證的SMTP服務器。這樣的話配置工作會多一點,但是使用的時候就比較省事了,幾行代碼就可以。

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

這種方法就比較常見了,尤其對于廣大自己沒有服務器,從網上購買虛擬主機的同學,第一種方法不現實,所以還是自己使用SMTP協議來發送郵件吧。

不過要完成這項工作的話,就需要你對SMTP協議有一定的了解,喜歡事必躬親的同學可以自己動手寫一個,喜歡拿來主義的同學就可以從網上下載了,有很多。

不過我比較推薦使用PEAR擴展中的Mail類功能強大:可以支持純文本、HTML格式的郵件;各字段都可設置編碼,正確配置不會出現中文亂碼情況;可以支持附件等等。

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

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

下面我舉例說明一下在Mail類發送郵件的方法吧,網上其他SMTP郵件類使用方法一塊也類似,可以參考:

<?php 
 
// Pear Mail 擴展 
require_once('Mail.php'); 
require_once('Mail/mime.php'); 
require_once('Net/SMTP.php'); 
 
$smtpinfo = array(); 
$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;//調試模式 
 
// 收件人列表 
$mailAddr = array('receiver@163.com'); 
 
// 發件人顯示信息 
$from = "Name <username@163.com>"; 
 
// 收件人顯示信息 
$to = implode(',',$mailAddr); 
 
// 郵件標題 
$subject = "這是一封測試郵件"; 
 
// 郵件正文 
$content = "<h4>隨便寫點什么</h4>"; 
 
// 郵件正文類型,格式和編碼 
$contentType = "text/html; charset=utf-8"; 
 
//換行符號 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)) { 
 //發送失敗 
 echo 'Email sending failed: ' . $mail->getMessage()."\n"; 
} 
else{ 
 //發送成功 
 echo "success!\n"; 
}

如果從網上找的SMTP類都是高度封裝的,所以使用起來比上面會更簡單,但使用方法都是比較相似的。

結論:這種方式發送郵件無需裝任何軟件,只需要包含進來一個PHP類,然后多寫幾行配置代碼,就可以了。并且網上有很多示例的代碼,很多時候只要復制過來然后修改個別的幾個參數就可以用了,所以會很方便,推薦使用此方法。

關于利用php實現郵件發送功能的方法有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卓资县| 六枝特区| 甘洛县| 丰都县| 绍兴县| 虎林市| 大城县| 罗江县| 江华| 临邑县| 常德市| 大姚县| 上思县| 宜川县| 毕节市| 贵阳市| 揭阳市| 旺苍县| 绥阳县| 民县| 碌曲县| 康定县| 汝南县| 图们市| 福州市| 楚雄市| 赣榆县| 周口市| 肇东市| 东明县| 定日县| 轮台县| 青海省| 墨竹工卡县| 炉霍县| 乃东县| 香格里拉县| 八宿县| 阳新县| 新乐市| 孟村|