如何防止加号在MailMessage主体中编码为ASCII代码

时间:2016-07-07 14:46:58

标签: javascript c# html encoding mailmessage

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

脚本标记的格式应如下:

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

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

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

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

由于

1 个答案:

答案 0 :(得分:0)

我无法重现您遇到的问题。我在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);
        }
    }
}

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