단계별 : 먼저 오류 메시지가 나타나는 파일을 찾으십시오. 메모장 ++과 CTRL+ F명령을 사용하여 파일을 검색합니다. 일부 오류 메시지는 다른 메시지로 결합되므로 오류 메시지의 처음 몇 단어 만 검색하는 것이 좋습니다.
오류 메시지가 나타나고 wp-login.php
거기에만 나타납니다 . 이 오류가 발생할 수있는 이유를 살펴 보겠습니다.
if ( $message && !wp_mail($user_email, $title, $message) )
두 가지 조건이 있습니다. $message
빈 문자열이 아니거나, 거짓이 아니고, 널이 아닌 등의 값이어야합니다. 그리고 wp_mail()
거짓을 반환해서는 안됩니다.
위의 한 줄에 filter $message = apply_filters('retrieve_password_message', $message, $key);
가 있으므로 플러그인 (또는 테마) 이이 필터를 사용하고 true가 아닌 값 (빈 문자열, false, 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를 실행하는 경우 네임 스페이스를 제거하십시오)
플러그인은 활성화 후 즉시 테스트 메일을 보내야합니다. 그렇지 않은 경우 일부 백엔드 페이지 (예 : 대시 보드)를 호출하면됩니다.
테스트 메일이 도착하지 않으면에 문제가있을 수 있습니다 wp_mail()
. 디버깅을 켜십시오.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
이 코드를 넣고 wp-config.php
테스트 메일을 보내십시오. 이제 몇 가지 오류 메시지가 표시되고 로그인해야합니다 wp-content/debug.log
(플러그인 및 / 또는 테마로 인해 더 많은 오류가 발생하면 디버그 로그가 매우 커질 수 있음).
이 시점에서 wp_mail()
실패하면 좋은 정보를 얻었고 , 그렇지 않은 경우 그 이유를 알 수 있습니다. 경우 wp_mail()
제대로 작동하고 testmail 도착, 정상으로 돌아가 이유를 알아 $message
사실이 아니다.
당신은 문제가 있다면 wp_mail()
, 그래서 명심 wp_mail()
PHPs의 사용하지 않는 mail()
기능을. 워드 프레스는 PHP 클래스 ( PHPMailer )를 사용합니다. sendmail 대신 SMTP를 사용하려면 플러그인이 필요할 수 있습니다 . 또는 문제가 다른 곳에 있습니다. 우리는 모른다. 조사해야합니다.