PHP的mail() 郵件函數很簡單,但也導致了不能使用目前流行的 帶驗證功能的 SMTP 服務器(gmail, 163, 126等)
現在通過配置 XAMPP 提供的 sendmail 來使得 PHP 的 mail() 函數可以正常發送郵件,下面以:smtp.126.com 為例:
1. 找到 xampp/php/php.ini 文件,找到 [mail function] 語句塊,修改如下:
1 [mail function]
2 SMTP = smtp.126.com
3 smtp_port = 25
4 sendmail_from = [email protected]
5 sendmail_path = "\"你的xampp安裝目錄\xampp\sendmail\sendmail.exe\" -t"
2. 找到 xampp/sendmail/sendmail.ini 文件,修改如下:
1 [sendmail]
2 smtp_server = localhost
3 smtp_port = 25
4 default_domain = 126.com
5 auth_username = 你的郵箱@126.com
6 auth_password = 你的密碼
7
8 force_sender = [email protected]
3. 配置 SSL 服務(可選)
因為gmail, 163, 126 等需要使用SSL來連接SMTP郵件服務器,而xampp裡的sendmail程序不支持ssl連接。
如果你使用的是其它郵箱,且不需要SSL來連接SMTP,那把smtp.126.com改成對應的SMTP服務器地址就好了。
我們可以下載安裝一個SSL代理軟件,我們這裡使用http://www.stunnel.org/
安裝成功後,打開stunnel裡面的stunnel.conf文件,找到下面的代碼,修改如下:
這裡我們增加了一個 [126-smtp] 節點:
1 ;[gmail-smtp]
2 ;client = yes
3 ;accept = 127.0.0.1:25
4 ;connect = smtp.gmail.com:465
5
6 [126-smtp]
7 client = yes
8 accept = 127.0.0.1:25
9 connect = smtp.126.com:465
4. 測試你的 PHP mail() 函數吧,呵呵!
view source
print? www.2cto.com
01 <?php
02 $from_name = 'xxx';
03 $from_email = '[email protected]';
04 $headers = 'From: $from_name <$from_email>';
05 $body = 'This is a test mail';
06 $subject = 'Test email from php mail()';
07 $to = '[email protected]';
08 if (mail($to, $subject, $body, $headers)) {
09 echo "success!";
10 } else {
11 echo "fail…";
12 }
13 ?>
5. 你已經成功了!
作者:json