这个有点让人困惑。我本来想说的是,你需要在邮件发送后确定是否有什么问题,因为你在下一次操作中受到了打击。但后来我重新阅读了它,捕捉到了手动运行时收到的电子邮件部分。
您需要做的是找出是否发生了错误。由于这不是一个手动过程,这不是很直接;但有办法做到这一点。这个答案不会特别solve 你遇到的问题,但它应该让你有办法确定这个问题到底是什么。
我会设置捕捉任何错误,然后记录它们。您可以通过确保WP已设置为调试并记录任何错误来实现这一点。确保wp配置中包含以下内容。php:
define( \'WP_DEBUG\', true );
define( \'WP_DEBUG_LOG\', true );
现在您可以使用WP
error_log()
函数将任何错误写入日志文件。
wp_mail()
运行时返回true | false布尔值。如果有任何错误,它将返回false。因此,我们可以根据结果写入日志。
因此,在函数中,根据返回的结果将写入错误日志。
function only_debug_admin(){
$message = "Test message";
$wp_mail_result = wp_mail( \'[email protected]\', $message, $message );
if ( true === $wp_mail_result ) {
error_log( \'wp_mail returned true!\' );
} else {
error_log( \'wp_mail had an error!\' );
}
}
如果
wp_mail()
错误(返回false),则您希望能够捕获
phpMailer
看看这是否能让你明白为什么。
add_action( \'phpmailer_init\', \'my_log_phpmailer_init\' );
function my_log_phpmailer_init( $phpmailer ) {
error_log( print_r( $phpmailer, true ) );
}
现在,当cron运行时,您可以检查错误日志(/wp-content/debug.log)以了解发生了什么。如果
wp_mail()
返回true,该问题是发送主机或接收方(WP之外)的电子邮件问题。如果为false,请查看phpMailer中的错误(也应在日志中)。
这不是solve 你的问题,但它会让你走上正轨,弄清楚它到底是什么。