以HTML格式发送一封特定的电子邮件,其余以纯文本格式发送

时间:2015-11-24 作者:user3290060

我的wordpress网站上有3种不同的电子邮件类型。

注册电子邮件

  • 忘记密码的电子邮件
  • 所有其他电子邮件
    • 我希望我的注册和忘记密码的电子邮件以HTML格式发送,然后所有其他电子邮件以纯文本发送。

      我使用BuddyPress处理我的注册,并已成功更改注册电子邮件,内容如下:

      /* Custom user registration email */
      function set_bp_message_content_type() {
          return \'text/html\';
      }
      
      add_filter( \'bp_core_signup_send_validation_email_message\', \'custom_buddypress_activation_message\', 10, 3 );
      
      function custom_buddypress_activation_message( $message, $user_id, $activate_url ) {
          add_filter( \'wp_mail_content_type\', \'set_bp_message_content_type\' );
          $user = get_userdata( $user_id );
          return \'MY HTML MESSAGE HERE\'
      
      }
      
      我创建了另一个功能来修改注册电子邮件,如下所示:

      /* Change ccontent type to HTML */
      add_action( \'login_form_retrievepassword\', function()
      {   add_filter( \'wp_mail_content_type\', function() {  return text/html;  });
      });
      
      /* Change Subject */
      add_filter( \'retrieve_password_title\', function() {
          return \'Complete-Models Password Reset\';
      });
      
      /* Change the message/body of the email */
      add_filter( \'retrieve_password_message\', \'rv_new_retrieve_password_message\', 10, 2 );
      
      function rv_new_retrieve_password_message( $message, $key ){
          // Bail if username or email is not entered
      
          if ( ! isset( $_POST[\'user_login\'] ) )
              return;
      
          // Get user\'s data
          if ( strpos( $_POST[\'user_login\'], \'@\' ) ) { # by email
              $user_data = get_user_by( \'email\', trim( $_POST[\'user_login\'] ) );
          } else { 
              # by username
              $login = trim( $_POST[\'user_login\'] );
              $user_data = get_user_by( \'login\', $login );
          }
          // Store some info about the user
          $user_fname = $user_data->user_firstname;
          $user_login = $user_data->user_login;
          $user_email = $user_data->user_email;
      
          // Assembled the URL for resetting the password
          $reset_url = add_query_arg(array(
              \'action\' => \'rp\',
              \'key\' => $key,
              \'login\' => rawurlencode( $user_login )
          ), wp_login_url() );
      
          return \'HTML MESSAGE HERE\';
      
      }
      
      注册电子邮件工作正常,但忘记密码的电子邮件仍以纯文本发送。有没有办法将特定的电子邮件设置为HTML?

    1 个回复
    最合适的回答,由SO网友:shanebp 整理而成

    尝试在返回值周围添加引号:

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

    相关推荐

    按用户‘xprofile’自定义域筛选BuddyPress用户帖子

    嗨,我正在努力找出如何根据用户的个人资料字段为用户的帖子制作过滤器。。示例=用户注册表选择了2017、2018学年的下拉配置文件字段,然后他们创建了一个帖子。按毕业年份的分类筛选所有帖子。。所以你只能看到那个学年的人发的帖子。有没有人知道一个插件可以做到这一点。令人困惑的是,帖子正在加载,但会根据成员详细信息进行过滤。两个单独的目录。请提供帮助或建议