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() in
問題一
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() in
解決方法:
PHP的Mail函數使用的是SMTP服務發出E-Mail的。也就是說你需要在php.ini里配置好適當的SMTP服務器地址和端口信息。如果你需要在本機上發出E-Mail,即
SMTP = localhost
smtp_port = 25
這樣的話,你需要在你自己的本機上配置上SMTP服務才可以。你可以嘗試打開IIS的SMTP服務。
問題二
mail(): SMTP server response: 550 5.7.1 Unable to
解決方法:
關鍵一步:我的電腦->管理->服務和應用程序 ->SMTP虛擬服務器上點擊右鍵,在彈出的屬性窗口里進行如下設置:
點擊訪問選項卡,再點擊中繼,在彈出的窗口出點擊添加,然后選單台計算機,添加IP地址為 127.0.0.1。
這時就可以測試一下了..如果不可以繼續往下操作...
還有的網友說要修改php.ini文件,做成如下配 置,但我覺得是沒有必要的,我用的默認設置就可以,如果您經過以上設置還不可以發送的話,就再修改一下吧,注意修改后要重啟web服務器:
php.ini的設置: 可使用默認選項,不用修改
SMTP = localhost //默認,不用修改
smtp_port = 25 //默認,不用修改
sendmail_from=你的設定值 //如果不指定,就必須在程序中指定
這樣就可以使用mail函數了
<?php
$to = "***@163.com"; //改成自己的郵箱進行測試
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "shf@qq.com"; //隨意設置
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
注意:收不到郵件還有另一個原因就 是目標郵件系統服務商的設置,有的當成正常郵件,有的當成垃圾郵件,還有的直接不接收,如果一個郵箱不成功的話,建議換個郵件服務提供商試試。據我測試 gmail 163可以收到,qq有時收不到。
小結:
這種“Unable to relay user@externaldomain.com”的錯誤通常屬於設計意圖。也就是說,為了防止Internet上的Unsolicited Commercial E-Mail (UCE),Microsoft的SMTP服務,默認,是不允許一封郵件通過它中繼到外面的郵件地址的!
附件: smpt_class.php