Từng bước: Đầu tiên tìm tập tin xuất hiện thông báo lỗi. Tôi sử dụng Notepad ++ và lệnh CTRL+ Fđể tìm kiếm trong các tệp. Đó là một ý tưởng tốt để chỉ tìm kiếm một vài từ đầu tiên của thông báo lỗi, bởi vì một số thông báo lỗi được kết hợp của các thông báo khác nhau.
Thông báo lỗi của bạn xuất hiện wp-login.php
và may mắn thánh, chỉ có ở đó. Vì vậy, hãy xem tại sao lỗi này có thể xảy ra.
if ( $message && !wp_mail($user_email, $title, $message) )
Có hai điều kiện. $message
phải đúng (không phải là một chuỗi rỗng, không sai, không null, v.v.). Và wp_mail()
không nên trả lại sai.
Một dòng ở trên, có một bộ lọc $message = apply_filters('retrieve_password_message', $message, $key);
, vì vậy có thể một plugin (hoặc chủ đề) sử dụng bộ lọc này và trả về một giá trị không đúng (chuỗi rỗng, false, null, v.v.).
Nhưng nó dễ dàng hơn nhiều để kiểm tra xem wp_mail()
có hoạt động hay không. Viết một plugin nhỏ để gửi thư kiểm tra cho chính bạn:
<?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 );
}
(Đây là mã PHP5.3. Nếu bạn đang chạy PHP5.2, hãy xóa các thứ trong không gian tên)
Các plugin nên gửi một testmail ngay sau khi kích hoạt. Nếu không, gọi một số trang phụ trợ (ví dụ bảng điều khiển) sẽ làm điều đó.
Nếu testmail không đến, thì có lẽ bạn có vấn đề với wp_mail()
. Vì vậy, bật gỡ lỗi:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Đặt mã này vào của bạn wp-config.php
và thử lại gửi cho mình một testmail. Bây giờ bạn sẽ nhận được một số thông báo lỗi và chúng cũng nên được đăng nhập wp-content/debug.log
(Nhật ký gỡ lỗi có thể phát triển rất lớn nếu có nhiều lỗi do plugin và / hoặc chủ đề gây ra).
Tại thời điểm này, bạn đã nhận được thông tin tốt nếu wp_mail()
thất bại và nếu vậy, tại sao. Nếu wp_mail()
hoạt động chính xác và testmail đã đến, hãy quay lại đầu trang và tìm hiểu tại sao điều đó $message
không đúng.
Nếu bạn có vấn đề với wp_mail()
, vì vậy hãy nhớ rằng wp_mail()
không sử dụng mail()
chức năng PHP . WordPress sử dụng một lớp PHP ( PHPMailer ). Có lẽ bạn chỉ cần một plugin để sử dụng SMTP thay vì sendmail. Hoặc vấn đề được đặt ở một nơi khác. Chúng tôi không biết. Bạn phải điều tra.