之前一直使用第三方的郵件系統發送郵件,比如QQ啊、gmail啊等,但是有時候客戶不希望給我們提供發件人郵箱和密碼,后來我才發現使用PHP自帶的mail函數完全可以實現這一需求了
配置
工欲善其事,必先利其器。首先我們以windows下面為例進行說明,如何配置一下本地的mail。
下載附件 sendmail.zip
-解壓到任意路徑,修改sendmail.ini,根據實際需要修改下面的信息。代碼如下:
- [sendmail]
- smtp_server=smtp.qq.com
- smtp_port=25
- error_logfile=error.log
- debug_logfile=debug.log
- auth_username=***@qq.com
- auth_password=***
- force_sender=***@qq.com
- -php.ini
- [mail function]
- SMTP = smtp.qq.com
- smtp_port = 25
- sendmail_from = ***@qq.com
- sendmail_path = "D:/sendmail/sendmail.exe -t -i"
- mail.add_x_header = On
注意:目前測試只是qq發送成功,163的不成功可能是他有過濾系統,可以成功發送給gmail。
語法代碼如下:
mail(to,subject,message,headers,parameters)
定義和用法
mail() 函數允許您從腳本中直接發送電子郵件。
如果郵件的投遞被成功地接收,則返回 true,否則返回 false。
說明
在 message 參數規定的消息中,行之間必須以一個 LF(/n)分隔。每行不能超過 70 個字符。
(Windows 下)當 PHP 直接連接到 SMTP 服務器時,如果在一行開頭發現一個句號,則會被刪掉。要避免此問題,將單個句號替換成兩個句號。代碼如下:
- <?php
- $text = str_replace("/n.", "/n..", $text);
- ?>
提示和注釋
注釋:您需要緊記,郵件投遞被接受,并不意味著郵件到達了計劃的目的地。
示例
下面引用一個官方的發送HTML郵件的例子。代碼如下:
- <?php
- $to = "[email protected], [email protected]";
- $subject = "HTML email";
- $message = "
- <html>
- <head>
- <title>HTML email</title>
- </head>
- <body>
- <p>This email contains HTML Tags!</p>
- <table>
- <tr>
- <th>Firstname</th>
- <th>Lastname</th>
- </tr>
- <tr>
- <td>John</td>
- <td>Doe</td>
- </tr>
- </table>
- </body>
- </html>
- ";
- // 當發送 HTML 電子郵件時,請始終設置 content-type
- $headers = "MIME-Version: 1.0" . "/r/n";
- $headers .= "Content-type:text/html;charset=utf-8" . "/r/n";
- // 更多報頭
- $headers .= 'From: <[email protected]>' . "/r/n";
- $headers .= 'Cc: [email protected]' . "/r/n";
- mail($to,$subject,$message,$headers);
- ?>
新聞熱點
疑難解答