ทีละขั้นตอน: ขั้นแรกค้นหาไฟล์ที่มีข้อความข้อผิดพลาดปรากฏขึ้น ฉันใช้ Notepad ++ และคำสั่งCTRL+ Fเพื่อค้นหาไฟล์ ขอแนะนำให้ค้นหาเฉพาะคำสองสามคำแรกของข้อความแสดงข้อผิดพลาดเนื่องจากข้อความแสดงข้อผิดพลาดบางส่วนมีการรวมกันของข้อความที่แตกต่างกัน
ข้อความแสดงข้อผิดพลาดของคุณปรากฏในwp-login.php
และโชคศักดิ์สิทธิ์เท่านั้นที่มี ดังนั้นมาดูกันว่าทำไมข้อผิดพลาดนี้อาจเกิดขึ้น
if ( $message && !wp_mail($user_email, $title, $message) )
มีสองเงื่อนไข $message
ต้องเป็นจริง (ไม่ใช่สตริงว่างเปล่าไม่ใช่เท็จไม่ใช่โมฆะ ฯลฯ ) และwp_mail()
ไม่ควรกลับเท็จ
หนึ่งบรรทัดด้านบนมีตัวกรอง$message = apply_filters('retrieve_password_message', $message, $key);
ดังนั้นจึงเป็นไปได้ที่ปลั๊กอิน (หรือธีม) จะใช้ตัวกรองนี้และส่งคืนค่าที่ไม่เป็นความจริง (สตริงว่าง, เท็จ, null, ฯลฯ )
แต่มันง่ายกว่ามากในการตรวจสอบว่าwp_mail()
ทำงานหรือไม่ เขียนปลั๊กอินขนาดเล็กเพื่อส่งเมลทดสอบให้กับตัวเอง:
<?php
/**
* Plugin Name: Stackexchange Testplugin
* Plugin URI: http://yoda.neun12.de
* Description: Send me a test email
* Version: 0.1
* Author: Ralf Albert
* Author URI: http://yoda.neun12.de
* Text Domain:
* Domain Path:
* Network:
* License: GPLv3
*/
namespace WordPressStackexchange;
add_action( 'init', __NAMESPACE__ . '\plugin_init' );
function plugin_init(){
$to = 'your-email-adress@some-domain.tld';
$subject = 'Testemail';
$message = 'FooBarBaz Testmail is working';
wp_mail( $to, $subject, $message );
}
(นี่คือรหัส PHP5.3 หากคุณใช้ PHP5.2 ให้ลบสิ่งที่เป็น namespace)
ปลั๊กอินควรส่ง testmail ทันทีหลังจากเปิดใช้งาน หากไม่มีการโทรไปที่หน้าแบ็กเอนด์ (เช่นแดชบอร์ด) ควรทำ
หาก testmail wp_mail()
ไม่ได้มาถึงแล้วคุณอาจมีปัญหากับ ดังนั้นเปิดการดีบัก:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
ใส่รหัสนี้ในของคุณwp-config.php
และลองส่ง testmail ด้วยตัวคุณเอง ตอนนี้คุณควรได้รับข้อความแสดงข้อผิดพลาดและพวกเขาก็ควรจะเข้าสู่ระบบwp-content/debug.log
(บันทึกการแก้ปัญหาสามารถเติบโตขนาดใหญ่มากหากมีข้อผิดพลาดเพิ่มเติมที่เกิดจากปลั๊กอินและ / หรือธีม)
ณ จุดนี้คุณจะได้รับข้อมูลที่ดีหากwp_mail()
ล้มเหลวและถ้าเป็นเช่นนั้นทำไม หากwp_mail()
ทำงานอย่างถูกต้องและข้อความทดสอบมาถึงให้กลับไปที่ด้านบนและค้นหาสาเหตุที่$message
ไม่เป็นความจริง
หากคุณมีปัญหาเกี่ยวกับwp_mail()
โปรดจำไว้wp_mail()
ว่าไม่ได้ใช้mail()
ฟังก์ชันPHPs WordPress ใช้คลาส PHP ( PHPMailer ) บางทีคุณอาจต้องใช้ปลั๊กอินเพื่อใช้ SMTPแทน sendmail หรือปัญหาอยู่ที่อื่น เราไม่รู้ คุณต้องตรวจสอบ