具體問題情況
最近在查找主題BUG的時候發(fā)現(xiàn)一個很有趣的現(xiàn)象,就是 SMTP 郵箱設置的問題,評論回復是可以是可以不正常發(fā)送的,但是卻沒有任何審核的提示,之前忘記過一次密碼,結果通過郵箱找回出現(xiàn)如下錯誤:
無法發(fā)送電子郵件。
可能原因:您的主機禁用了mail()函數(shù)。
檢測mail函數(shù)是否禁用
使用PHP探針來檢測主機商是否禁用了mail函數(shù)。
PHP探針代碼如下,保存為php文件上傳到服務器打開就可以測試出來:
<?php
if (function_exists('mail')) {
echo "支持mail()函數(shù)!";
} else
echo "不支持mail()函數(shù)!";
?>
解決方案
本來以為是主機禁用了mail()函數(shù),但是通過PHP探針發(fā)現(xiàn),并沒有禁用。
下面提供禁用和支持mail函數(shù)都出現(xiàn)mail函數(shù)被禁用的解決方案給大家。
主機禁用mail函數(shù)解決方案
通過上面的PHP探針,如果發(fā)現(xiàn)主機禁用了mail函數(shù)則直接使用SMTP發(fā)送郵件來代替原來的mail函數(shù)
在這里送上使用的SMTP郵箱設置代碼(示例為QQ郵箱設置),丟進 functions.php 就行了。
function mail_smtp( $phpmailer ){
$phpmailer->From = "admin@miliol.com"; //發(fā)件人
$phpmailer->FromName = "米粒在線"; //發(fā)件人昵稱
$phpmailer->Host = "smtp.qq.com"; //SMTP服務器地址
$phpmailer->Port = 25; //SMTP端口,常用的有25、465、587,具體谷歌百度
$phpmailer->SMTPSecure = ""; //SMTP加密方式,常用的有SSL/TLS,具體谷歌百度
$phpmailer->Username = "admin@miliol.com"; //郵箱帳號
$phpmailer->Password = ******; //郵箱密碼
$phpmailer->IsSMTP(); //使用SMTP發(fā)送
$phpmailer->SMTPAuth = true; //啟用SMTPAuth服務
}
add_action('phpmailer_init','mail_smtp');
1F
wordpress無法發(fā)送郵件解決方法及設置
為了防止垃圾郵件,禁止了系統(tǒng)的sendmail功能,wordpress用戶只需要安裝一個官方的smtp插件即可使用外接的郵件服務器來發(fā)信.
如果不設置這個,游客或其他用戶發(fā)表評論是可能會需要等待非常長的時間才能發(fā)出評論或出現(xiàn)腳本錯誤.
插件地址:wordpress.org/extend/plugins/wp-mail-smtp/
安裝好后先到后臺plugins里去激活(Activate)WP-Mail-SMTP插件,然后后臺左下方的設置(settings)里會出現(xiàn)email設置選項,
以gmail為例:
From Email:你的gmail地址
From Name:發(fā)信人姓名,隨便填
Mailer:Send all WordPress emails via SMTP.
SMTP Host:smtp.gmail.com
SMTP Port:465
Encryption:Use SSL encryption.
Authentication:Yes: Use SMTP authenticati
Username:你的gmail用戶名(企業(yè)版用戶請?zhí)顚戉]件地址)
Password:你的gmail密碼
QQMAIL的設置
接收郵件服務器:pop.qq.com,使用SSL,端口號995
發(fā)送郵件服務器:smtp.qq.com,使用SSL,端口號25
賬戶名:您的QQ郵箱賬戶名(如果您是VIP帳號或Foxmail帳號,賬戶名需要填寫完整的郵件地址)
密碼:您的QQ郵箱密碼
電子郵件地址:您的QQ郵箱的完整郵件地址