C# 使用sendgrid发送HTML电子邮件会导致错误请求
在web应用程序中,电子邮件存储在数据库表中。我们从数据库中提取这些内容,替换占位符并发送电子邮件 我试图使用Sendgrid的web api/v3,但遇到了一个问题 以下是我如何准备发送电子邮件的示例: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
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
如果我用反斜杠转义引号,效果很好。我是否必须阅读所有引文