有没有办法用WordPress的wp_mail()函数发送HTML格式的电子邮件?

时间:2011-09-06 作者:racl101

是否有一个action\\u挂钩或类似的东西可以帮助我实现这一点?

我尝试在PHP字符串变量中添加标记,并发送了一封电子邮件wp_mail() 功能如下:

$email_to = \'[email protected]\';
$email_subject = \'Email subject\';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);
但它显示为纯文本?

有什么想法吗?

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

从…起wp_mail codex page:

默认内容类型为“文本/普通”,不允许使用HTML。但是,您可以使用“wp\\u mail\\u content\\u type”筛选器设置电子邮件的内容类型。

// In theme\'s functions.php or plug-in code:

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

SO网友:Jewel

或者,您可以在$headers参数中指定内容类型HTTP标头:

$to = \'[email protected]\';
$subject = \'The subject\';
$body = \'The email body content\';
$headers = array(\'Content-Type: text/html; charset=UTF-8\');

wp_mail( $to, $subject, $body, $headers );

SO网友:Nosebleed

使用wp\\U邮件功能后,不要忘记删除内容类型筛选器。按照接受的答案命名,您应该在执行wp\\U mail后执行此操作:

remove_filter( \'wp_mail_content_type\',\'wpse27856_set_content_type\' );
在此处检查此票证-重置内容类型以避免冲突--http://core.trac.wordpress.org/ticket/23578

SO网友:pranav shinde

使用ob_start, 因为这将允许您使用WP变量/函数,如bloginfo等。

制作一个PHP文件并将HTML粘贴到该文件中(如果需要,请在该PHP文件中使用wp变量)。

使用以下代码:

 $to = \'Email Address\';
 $subject = \'Your Subject\';

 ob_start();
 include(get_stylesheet_directory() . \'/email-template.php\');//Template File Path
 $body = ob_get_contents();
 ob_end_clean();

 $headers = array(\'Content-Type: text/html; charset=UTF-8\',\'From: Test <[email protected]>\');
 wp_mail( $to, $subject, $body, $headers );
这将保持您的代码干净,由于ob\\u start,我们还将节省加载文件的时间。

SO网友:Jilani A

下面我将分享另一种简单的方法。甚至你也可以随心所欲地设计你的邮件正文。也许这对你有帮助。

$email_to = \'[email protected]\';
$email_subject = \'Email subject\';

// <<<EOD it is PHP heredoc syntax
$email_body = <<<EOD
This is your new <b style="color: red; font-style: italic;">password</b> : {$password}
EOD;

$headers = [\'Content-Type: text/html; charset=UTF-8\'];

$send_mail = wp_mail( $email_to, $email_subject, $email_body, $headers );
有关PHP Herdeoc语法的详细信息https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴