Passo a passo: Primeiro encontre o arquivo em que a mensagem de erro aparece. Eu uso o Notepad ++ e o comando CTRL+ Fpara pesquisar em arquivos. É uma boa ideia pesquisar apenas as primeiras palavras da mensagem de erro, porque algumas mensagens de erro são combinadas com mensagens diferentes.
Sua mensagem de erro aparece wp-login.php
e com sorte, somente lá. Então, vejamos por que esse erro pode ocorrer.
if ( $message && !wp_mail($user_email, $title, $message) )
Existem duas condições. $message
precisa ser verdadeiro (não é uma string vazia, não é falsa, não é nula, etc.). E wp_mail()
não deve retornar falso.
Uma linha acima, há um filtro $message = apply_filters('retrieve_password_message', $message, $key);
, portanto, é possível que um plug-in (ou tema) use esse filtro e retorne um valor que não é verdadeiro (string vazia, false, null, etc.).
Mas é muito mais fácil verificar se wp_mail()
está funcionando ou não. Escreva um pequeno plugin para enviar um email de teste para si mesmo:
<?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 );
}
(Este é o código PHP5.3. Se você estiver executando o PHP5.2, remova as coisas do espaço para nome)
O plug-in deve enviar um email de teste imediatamente após a ativação. Caso contrário, chamar algumas páginas de back-end (por exemplo, painel) deve fazê-lo.
Se o testmail não chegar, provavelmente você está com um problema wp_mail()
. Então ative a depuração:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Coloque esse código no seu wp-config.php
e tente enviar um teste para si mesmo. Agora você deve receber algumas mensagens de erro e elas também devem estar logadas wp-content/debug.log
(o log de depuração pode aumentar muito se houver mais erros causados por plug-ins e / ou temas).
Nesse ponto, você tem boas informações se wp_mail()
falhar e, se sim, por quê. Se wp_mail()
funcionar corretamente e o testmail chegar, volte ao topo e descubra por que isso $message
não é verdade.
Se você tiver problemas wp_mail()
, lembre-se de que wp_mail()
não usa a mail()
função PHP . O WordPress usa uma classe PHP ( PHPMailer ). Talvez você só precise de um plugin para usar SMTP em vez de sendmail. Ou o problema está localizado em outro local. Nós não sabemos. Você tem que investigar.