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