Langkah demi langkah: Pertama cari file tempat pesan kesalahan muncul. Saya menggunakan Notepad ++ dan perintah CTRL+ Funtuk mencari file. Adalah ide yang baik untuk mencari hanya beberapa kata pertama dari pesan kesalahan, karena beberapa pesan kesalahan digabungkan dari pesan yang berbeda.
Pesan kesalahan Anda muncul wp-login.php
dan semoga beruntung, hanya di sana. Jadi mari kita lihat mengapa kesalahan ini bisa terjadi.
if ( $message && !wp_mail($user_email, $title, $message) )
Ada dua syarat. $message
harus benar (bukan string kosong, tidak salah, bukan nol, dll). Dan wp_mail()
seharusnya tidak kembali salah.
Satu baris di atas, ada filter $message = apply_filters('retrieve_password_message', $message, $key);
, jadi ada kemungkinan bahwa plugin (atau tema) menggunakan filter ini dan mengembalikan nilai yang tidak benar (string kosong, false, null, dll.).
Tetapi lebih mudah untuk memeriksa apakah wp_mail()
berfungsi atau tidak. Tulis sebuah plugin kecil untuk mengirim surat uji kepada diri Anda sendiri:
<?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 );
}
(Ini adalah kode PHP5.3. Jika Anda menjalankan PHP5.2, hapus hal-hal namespace)
Plugin harus mengirim testmail segera setelah aktivasi. Jika tidak, memanggil beberapa halaman backend (mis. Dasbor) harus melakukannya.
Jika testmail tidak tiba, maka Anda mungkin memiliki masalah dengan wp_mail()
. Jadi aktifkan debugging:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Masukkan kode ini ke Anda wp-config.php
dan coba ulangi sendiri sebuah testmail. Sekarang Anda harus mendapatkan beberapa pesan kesalahan dan mereka juga harus login wp-content/debug.log
(Log debug dapat tumbuh sangat besar jika ada lebih banyak kesalahan yang disebabkan oleh plugin dan / atau tema).
Pada titik ini, Anda mendapat informasi bagus jika wp_mail()
gagal dan jika demikian, mengapa. Jika wp_mail()
berfungsi dengan benar dan testmail tiba, kembali ke atas dan cari tahu mengapa $message
itu tidak benar.
Jika Anda memiliki masalah dengan wp_mail()
, jadi ingatlah bahwa wp_mail()
tidak menggunakan mail()
fungsi PHP . WordPress menggunakan kelas PHP ( PHPMailer ). Mungkin Anda hanya perlu plugin untuk menggunakan SMTP daripada sendmail. Atau masalahnya terletak di tempat lain. Kami tidak tahu. Anda harus menyelidikinya.