Как я могу предотвратить кодирование знака плюс в код ASCII в теле MailMessage
Я пытаюсь встроить некоторые теги JavaScript в MailMessage, который отправляется из нашей системы. Причина в том, что JSON-содержимое скрипта будет прочитано третьей стороной и проанализировано.
Тег скрипта должен быть отформатирован так:
<script type="application/json+trustpilot">
и вот как это выглядит, когда я проверяю свойство body MailMessage. Однако, когда он доставлен почтовому клиенту, он был отформатирован следующим образом:
<script type="application/json+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);
}
}
}
Когда письмо получено, оно выглядит корректно - и фрагмент структурированных данных анализируется правильно.