WP_mail循环发送多封电子邮件

时间:2020-06-15 作者:Dhimas Kirana

我对wp\\u mail()非常困惑。这是我的代码。

function email_notification_for_admin_and_customer( $order_data ) {
    $subject_email = \'Subject LOREM IPSUM\';
    $customer_email = \'Hi Customer, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempus, dui eget luctus accumsan, turpis orci malesuada turpis, eget volutpat ante velit a quam.\';
    $admin_email = \'Hi Admin, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempus, dui eget luctus accumsan, turpis orci malesuada turpis, eget volutpat ante velit a quam.\';
    $send_email = array(
        array(
            \'to\' => \'[email protected]\',
            \'subject\' => $subject_email,
            \'message\' => $customer_email
        ),
        array(
            \'to\' => \'[email protected]\',
            \'subject\' => $subject_email,
            \'message\' => $admin_email
        )
    );

    foreach ($send_email as $key => $value) {
        wp_mail( $value[\'to\'], $value[\'subject\'], $value[\'message\']);
    }

}
我想向管理员和客户发送电子邮件通知,但wp\\u mail()只发送第一封电子邮件,这是给客户的。你能帮帮我吗。非常感谢。

我也有同样的问题this thread, 但情况不同。

UPDATE THE ANSWER

我正在使用wp\\u邮件过滤器将wordpress普通电子邮件格式化为html电子邮件模板。

add_filter(\'wp_mail\', \'my_wp_mail_filter\');
function my_wp_mail_filter($args) {
    $message = $args[\'message\'];
    $args[\'message\'] = wpet_email_template(apply_filters(\'wpet_filter_email\', $message));
    return $args;
}
这是包含html模板的函数。

function wpet_email_template($message) {

    // Render Template
    ob_start();
    include(\'custom-email-template.php\');
    $wpet_template = ob_get_contents();
    ob_end_clean();

    // Replace Placeholder
    $message = str_replace(\'%%MAILCONTENT%%\', $message, $wpet_template);

    // Return Template with Data
    return $message;
}
问题是include_once(\'custom-email-template.php\');然后我改为include(\'custom-email-template.php\');

因此,这就是为什么电子邮件只发送给客户电子邮件(第一个$send\\u email数组)的问题所在。

在这里the answer

1 个回复
SO网友:timnavigate

作用wp_mail() 不适合在回路中使用。

不幸的是,循环反复数百次可能会大大降低脚本的速度,正如PHP\\u mail()函数的参考中所指出的那样。mail()函数不适用于循环中的大量电子邮件,这一点毫无意义。此函数用于打开和关闭每封电子邮件的SMTP套接字,但效率不高,循环运行时会出现许多故障。我在2016年3月出版的SmashingMagazine关于自定义Wordpress的书中找到了此信息。

我建议划分向管理员和客户发送电子邮件通知的功能。

function email_notification_for_customer( $order_data ) {    
    
    $subject_email = \'Subject LOREM IPSUM\';
    $customer_email = \'Hi Customer, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempus, dui eget luctus accumsan, turpis orci malesuada turpis, eget volutpat ante velit a quam.\';  
    
    /* send to list of customers mails */
    $send_email_to = array(
        \'[email protected]\',
        \'[email protected]\',
        \'[email protected]\',
        \'[email protected]\',
        \'[email protected]\'
    );  

    wp_mail( send_email_to, $subject_email, $customer_email);
}

function email_notification_for_admin( $order_data ) {
    
    $subject_email = \'Subject LOREM IPSUM\';
    $admin_email = \'Hi Admin, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempus, dui eget luctus accumsan, turpis orci malesuada turpis, eget volutpat ante velit a quam.\';
    
    /* send to single admin\'s mail */
    $send_email_to = array(
        \'[email protected]\'
    );

    wp_mail( $value[\'to\'], $subject_email, $admin_email);
}

相关推荐

如何覆盖/扩展WordPress函数IS_EMAIL

所以wordpress的核心并没有真正更新unicode域的电子邮件许可。即使是像德语umlauts(äÄöÖÜß)这样的简单特殊字符也不允许出现在名称的域部分。因此,我一直在考虑向is\\U电子邮件功能添加一个具有高优先级的过滤器,并简单地返回结果。但它似乎并没有像我预期的那样发挥作用。以下是我尝试过的:// Code written in my themes functions.php function kk_email_validation_override( $email ) {&