Как я могу предотвратить кодирование знака плюс в код ASCII в теле MailMessage

Я пытаюсь встроить некоторые теги JavaScript в MailMessage, который отправляется из нашей системы. Причина в том, что JSON-содержимое скрипта будет прочитано третьей стороной и проанализировано.

Тег скрипта должен быть отформатирован так:

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

и вот как это выглядит, когда я проверяю свойство body MailMessage. Однако, когда он доставлен почтовому клиенту, он был отформатирован следующим образом:

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

Существует множество советов, объясняющих, как кодировать специальные символы в html, но ни один из них не объясняет, как предотвратить это в особых случаях, таких как описанные выше. Может кто-нибудь помочь, я потратил целый день, пытаясь понять это!

Спасибо

1 ответ

Я не могу воспроизвести проблему, с которой вы столкнулись. Я создал минимальное консольное приложение в 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);
        }
    }
}

Когда письмо получено, оно выглядит корректно - и фрагмент структурированных данных анализируется правильно.

Другие вопросы по тегам