wp_mail() 将电子邮件主题中的“-”转换为“-”

Posted

技术标签:

【中文标题】wp_mail() 将电子邮件主题中的“-”转换为“-”【英文标题】:wp_mail() transforms "-" to "–" in email subject 【发布时间】:2021-01-05 04:35:47 【问题描述】:

我正在使用 wp_mail() 从自定义 WordPress 插件发送电子邮件。

我想弄清楚为什么发送的电子邮件导致电子邮件主题中的一些非字母数字字符被更改?例如,“Word1 - Word2”这样的主题会被接收为“Word1 – Word 2”,看起来一点都不好看。

代码如下:

$subject = 'word1 - word2';
$msg = 'message';
$headers = 'Content-Type: text/html; charset=utf-8';
wp_mail('a@b.com', $subject, $msg, $headers);

电子邮件主题在 Gmail 中显示“Word1 – Word 2”。我知道这与编码有关,但有人知道如何解决这个问题吗?

谢谢!

【问题讨论】:

【参考方案1】:
E28093     8211=x2013  [–]   ON  EN DASH

– 是一个“html 实体”。其中有一整套允许您仅使用纯 Ascii 字符为网页编码任何花哨的字符。

它也是 Unicode“代码点”8211(十进制)或 2013(十六进制)。它可以在大多数地方使用 3 utf-8 字节十六进制 E28093 进行编码

发件人有一种编码 EN 破折号而不是普通破折号 - 的方法。

很可能wp_mail 故意编码任何非ascii 字符以避免在网页上呈现时发生奇怪的事情。

在任何网页上– 将呈现为 -

“编辑”我的答案,看看这正是我所做的。 (另请注意,此论坛上的 ` 禁止渲染。)

【讨论】:

以上是关于wp_mail() 将电子邮件主题中的“-”转换为“-”的主要内容,如果未能解决你的问题,请参考以下文章

在 wordpress 中使用 wp_mail 发送 HTML 和纯文本电子邮件

使用 wp_mail() 发送 HTML 电子邮件时,CSS 将不起作用

WP_MAIL() 不发送附件

调用未定义的函数 wp_mail

在 wp_mail 标头中设置回复地址

如何更改 Wordpress 电子邮件的回复标题中的电子邮件地址