日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php email,两种PHP邮件发送的方式

發布時間:2024/9/27 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php email,两种PHP邮件发送的方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有不少程序員在用PHP發送郵件的時候會遇到幾個問題,那么遇到問題就要有解決問題的思路,本文就是根據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 ";

// 收件人顯示信息

$to = implode(',',$mailAddr);

// 郵件標題

$subject = "這是一封測試郵件";

// 郵件正文

$content = "

隨便寫點什么

";

// 郵件正文類型,格式和編碼

$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 email,两种PHP邮件发送的方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。