在Wordpress中显示格式化电子邮件的问题

问题描述

认情况下,wp_mail函数不支持显示格式化的电子邮件。例如,带有格式文本的新评论通知显示HTML标签显示为纯文本。

我通过将以下代码添加 functions.PHP 文件解决了此问题:

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

此后,电子邮件开始带有格式化文本且没有HTML标签

但是出现另一个问题。整封电子邮件以连续文本显示:没有新行,也没有段落:只是所有句子都在一行中。

您知道它可能与什么有关吗?

解决方法

我通常通过在wp_mail()的headers参数中传递内容类型来解决此问题

例如...

$to = '[email protected]';
$subject = 'HTML Test';
$body = '<html>...</html>';
$headers = [
  'Content-Type' => 'text/html; charset=UTF-8'
];

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

此处有更多信息:https://developer.wordpress.org/reference/functions/wp_mail/

希望这能回答您的问题。