C# 使用sendgrid发送HTML电子邮件会导致错误请求

C# 使用sendgrid发送HTML电子邮件会导致错误请求,c#,email,sendgrid-api-v3,C#,Email,Sendgrid Api V3,在web应用程序中,电子邮件存储在数据库表中。我们从数据库中提取这些内容,替换占位符并发送电子邮件 我试图使用Sendgrid的web api/v3,但遇到了一个问题 以下是我如何准备发送电子邮件的示例: var sent = false; try { var apiAddress = "https://api.sendgrid.com/v3/mail/send"; HttpWebRequest request = (HttpWebRequest)WebRequest.Creat

在web应用程序中,电子邮件存储在数据库表中。我们从数据库中提取这些内容,替换占位符并发送电子邮件

我试图使用Sendgrid的web api/v3,但遇到了一个问题

以下是我如何准备发送电子邮件的示例:

var sent = false;
try
{
    var apiAddress = "https://api.sendgrid.com/v3/mail/send";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiAddress);
    request.Headers.Add("Authorization", "Bearer SG.snip");
    request.ContentType = "application/json";
    request.Proxy = null;
    request.Method = "POST";
    request.ProtocolVersion = HttpVersion.Version11;
    var content = "<p>simple html comment with nothing complex</p>";
    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        string json = "{ \"categories\" :[\"cat1\"],\"personalizations\": [{\"to\": [{\"email\":\"me@domain.com\"}],\"subject\": \"test email\"}],\"from\": {\"email\": \"email@domain.com\"},\"content\": [{\"type\": \"text/html\",\"value\": \"<html>" + content + "</html>\"}]}";
        streamWriter.Write(json);
    }

    WebResponse response = request.GetResponse();
    Stream dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);

    string responseFromServer = reader.ReadToEnd();
    sent = true;
}
catch (Exception ex)
{
    sent = false;
}
var sent=false;
尝试
{
var apiAddress=”https://api.sendgrid.com/v3/mail/send";
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(apiAddress);
请求。标题。添加(“授权”、“持票人签名”);
request.ContentType=“application/json”;
Proxy=null;
request.Method=“POST”;
request.ProtocolVersion=HttpVersion.Version11;
var content=“没有复杂内容的简单html注释”

”; 使用(var streamWriter=newstreamwriter(request.GetRequestStream())) { 字符串json=“{\'categories\”:[\'cat1\”],“personalizations\”:[{\'to\”:[{\'email\”:\”me@domain.com\“}],”主题\“:\”测试电子邮件\“}],\”发件人\“:{\”电子邮件\“:\”email@domain.com\“},\'content\':[{\'type\':\'text/html\',\'value\':\\'+content+“\'}]}”; streamWriter.Write(json); } WebResponse=request.GetResponse(); Stream dataStream=response.GetResponseStream(); StreamReader=新的StreamReader(数据流); 字符串responseFromServer=reader.ReadToEnd(); 发送=真; } 捕获(例外情况除外) { 发送=错误; }
这个发送很好,但是当我的内容很复杂时,API返回400个错误请求,而电子邮件不会发送

我遇到问题的电子邮件中有引号,例如,这里是电子邮件的浓缩版本:

<!DOCTYPE html><html lang="en"><body>hi</body></html>
hi
如果我用反斜杠转义引号,效果很好。我是否必须阅读所有引文