Wp_mail()未在多站点子域中发送电子邮件

时间:2016-04-27 作者:mpsbhat

我有一个支持多站点的WordPress配置。我的主要领域是http://www.example.com, 有几个子域,如http://test1.example.com, http://test2.example.com, 等等

我在多站点主题的函数文件中编写了一个函数,用于向多站点用户发送一些通知。

 $headers[] = \'Content-Type: text/html; charset=UTF-8\';
 wp_mail(\'[email protected]\', \'Test\',\'Test\', $headers);
它在主域上根据需要发送邮件,但在子域功能文件中使用时不发送任何邮件。

例如[email protected] 是的注册用户http://test1.example.com 他在他的子域页面上提交了一些信息http://test1.example.com/information-form. 我想将该信息发送到该用户的电子邮件。

EDIT: 场景:

我有一个表单,它有一些输入字段add_action(\'wp_ajax_xxx\', \'myFunction\'); 挂钩功能页(用户已登录)

  • myFunction 上述代码驻留
  • 1 个回复
    SO网友:mpsbhat

    最后,我找到了上述问题的原因和解决方法。

    当我在子域中发送电子邮件时,例如http://test1.example.com 如果标头中没有自定义的“发件人”地址,则wp_mail() 函数本身将默认的“发件人”地址设置为[email protected]. 这无效,因此未发送电子邮件。

    为了解决这个问题,我在标题中添加了一封自定义的“发件人”电子邮件,如下所示:

    $headers[] = \'From: Sender Name <[email protected]>\';

    这将在邮件头中设置有效的电子邮件地址。

    您还可以使用以下过滤器进行设置:

    add_filter(\'wp_mail_from\', function( $email ) {
        return \'[email protected]\';
    });
    
    add_filter(\'wp_mail_from_name\', function( $name ) {
        return \'Sender Name\';
    });