问题描述

有没有一个类似的可以帮助我实现这一点的 action_hook?

我尝试在 PHP 字符串变量中添加标记,并刚刚使用 wp_mail 函数发出电子邮件,如下所示:

$email_to = 'someaddress@gmail.com';
$email_subject = 'Email subject';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);

但它显示为明文吗?

有任何想法吗?

最佳解决方案

来自 wp_mail codex page

The default content type is ‘text/plain’ which does not allow using HTML. However, you can set the content type of the email by using the ‘wp_mail_content_type’ filter.

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

次佳解决方案

或者,您可以在 $ headers 参数中指定 Content-Type HTTP 头:

$to = 'sendto@example.com';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

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

第三种解决方案

使用 wp_mail 功能后,请勿忘记删除内容类型过滤器。遵循接受的答案命名,您应该在执行 wp_mail 后执行此操作:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

在这里检查这张票 – 重置 content-type 以避免冲突 – http://core.trac.wordpress.org/ticket/23578

参考文献

注:本文内容整合自 google/baidu/bing 翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为 @) 。