如何防止加号在邮件正文中编码为 ASCII 代码

本文关键字:编码 ASCII 代码 正文 何防止 | 更新日期: 2023-09-27 17:55:36

我正在尝试在从我们的系统发送的邮件中嵌入一些javascript标签。原因是脚本的 JSON 内容将由第三方读取并解析。

脚本标记的格式应如下所示:

<script type="application/json+trustpilot">

这就是我检查邮件的 body 属性时的外观。但是,当它被传递到邮件客户端时,它的格式如下:

<script type="application/json&#43;trustpilot">

有很多建议解释了如何在 html 中编码特殊字符,但没有一个解释如何在上述特殊情况下阻止它发生。谁能帮忙,我花了一整天的时间试图解决这个问题!

谢谢

如何防止加号在邮件正文中编码为 ASCII 代码

我无法重现您遇到的问题。我在 C# 中创建了一个最小的控制台应用程序来尝试重现它。我正在发送电子邮件,电子邮件正文中只有一个非常小的"结构化代码片段"。

namespace TestingMailMessage
{
    using System.Net;
    using System.Net.Mail;
    public class Program
    {
        public static void Main(string[] args)
        {
            const string FromEmail = "<some-email-address>";
            const string Password = "<your-password>";
            var mailMessage = new MailMessage(
                FromEmail,
                "xxxxxxxxxx@invite.trustpilot.com",
                "This is a test trigger",
                "<script type='"application/json+trustpilot'">{'"recipientEmail'": '"jane.doe@trustpilot.com'"}</script>");
            var smtpClient = new SmtpClient
                {
                    Host = "smtp.gmail.com",
                    Port = 587,
                    EnableSsl = true,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Credentials = new NetworkCredential(FromEmail, Password)
                };
            smtpClient.Send(mailMessage);
        }
    }
}

收到电子邮件后,它看起来是正确的 - 并且"结构化数据片段"被正确解析。