<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            php語言

            使用PHP發送郵件的兩種方法

            時間:2025-04-22 12:51:47 php語言 我要投稿
            • 相關推薦

            使用PHP發送郵件的兩種方法

              如何使用使用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

              看來是需要驗證信息,怎么寫驗證信息呢?在哪里配置呢?上網找了半天也沒找出個所以然,最后看了別人一些技術文章后得出結論(由于對SMTP郵件什么的不是非常了解,所以也不知道這個結論是否是正確的):使用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 ,要一塊下載,使用時一塊包含進來。

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

              下面我舉例說明一下在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 = "<h3>隨便寫點什么</h3>";

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

              $contentType = "text/html; charset=utf-8";

              //換行符號 Linux:  Windows:

              $crlf = " ";

              $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()." ";

              }

              else{

              //發送成功

              echo "success! ";

              }

              ?>

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

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


            【使用PHP發送郵件的兩種方法】相關文章:

            PHP郵件發送驗證03-16

            如何使用JSP來發送郵件07-04

            PHP的GET和POST請求發送方法04-24

            Java 發送郵件12-06

            php使用curl發送json格式數據實例07-08

            PHP如何使用curl發送GET和POST請求03-02

            使用php偽造referer的方法04-03

            php使用sessioncookie變量的方法06-09

            PHP中魔術方法的使用方法04-09

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院