WP邮件 - 传递失败:未知错误,如何调试?

时间:2014-10-26 22:56:51

标签: php wordpress email postfix-mta

我在每周五中午运行的服务器上有一个cron-job。它是一个收件人列表,对应于WordPress实例中的用户列表 - 列表可能会不断变化(每次运行作业时都可以删除并添加电子邮件地址)。发送实际电子邮件的函数是wp_mail(),它使用内置mail()的php。

这项工作已经运行了好几周,直到最近我得到的是以下错误:

Delivery failed: unknown error

我尝试使用php命令通过命令行运行脚本,并输出相同的错误。我已经尝试仅使用我的电子邮件地址作为唯一的收件人进行调试,并且它工作正常,这让我相信它是电子邮件列表中的一个电子邮件地址的问题地址。

我的问题是,如何调试这种模糊的错误消息?其次,我怎样才能找到"罪魁祸首"可能导致问题的电子邮件地址?有没有办法禁用后缀,以便wp_mail实际上没有发送任何电子邮件?

以下是发送电子邮件的代码:

<?php

// Get all user emails
$user_query = new WP_User_Query( array( 'fields' => array( 'ID', 'user_email' ) ) );

if ( ! empty( $user_query->results ) ) {
    $recipients = array();
    $members = $user_query->results;

    // sort according to last name
    usort($members, create_function('$a, $b', 'return strnatcasecmp($a->last_name, $b->last_name);'));

    foreach ( $members as $member ) {
        if( get_the_author_meta( "active_user", $member->ID )  == "yes" ){

          if ( filter_var($member->user_email, FILTER_VALIDATE_EMAIL) ) {
            array_push( $recipients, $member->user_email );
      }else{
        echo $member->user_email . ' is an invalid email!' . PHP_EOL;
      }
        }
    }
}
// Build and send the reminder email
if( !empty( $settings['weekly_email']) ){

    add_filter( 'wp_mail_content_type', 'set_html_content_type' );
    function set_html_content_type() {
        return 'text/html';
    }

    $reminder_message = 'This is your reminder...'
    $headers = 'From: Reminder bot <reminderbot@somedomain.com>' . "\n";
    $headers .= 'Bcc: ' . implode( ',', $recipients ) . "\r\n";
    wp_mail( 'reminderbot@somedomain.com', 'Your reminder', $reminder_message, $headers );

    // Reset content-type to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578
    remove_filter( 'wp_mail_content_type', 'set_html_content_type' );
}

0 个答案:

没有答案