C# HTTP状态为500的Mandrill API响应
我一直在尝试让我的MVC web应用程序使用Mandrill API订阅发送电子邮件,但没有成功。这个mandrillapi通过将C# HTTP状态为500的Mandrill API响应,c#,asp.net-mvc,mandrill,C#,Asp.net Mvc,Mandrill,我一直在尝试让我的MVC web应用程序使用Mandrill API订阅发送电子邮件,但没有成功。这个mandrillapi通过将JSON对象发布到特定端点来工作。它看起来非常简单和直截了当,这就是为什么每次我试图发送电子邮件时,我都会收到Mandrill的回复,除了“500内部服务器错误”,没有额外的信息或其他任何信息 有趣的是,Mandrill API有一个可用于测试其API的工具。因此,我进入并传递了完全相同的JSON对象,我的应用程序在接收到恼人的Http错误时正在发送该对象,并且发送的
JSON
对象发布到特定端点来工作。它看起来非常简单和直截了当,这就是为什么每次我试图发送电子邮件时,我都会收到Mandrill的回复,除了“500内部服务器错误”,没有额外的信息或其他任何信息
有趣的是,Mandrill API有一个可用于测试其API的工具。因此,我进入并传递了完全相同的JSON
对象,我的应用程序在接收到恼人的Http错误时正在发送该对象,并且发送的电子邮件没有任何问题。因此,基本上我通过他们的电子邮件发送相同的电子邮件没有问题,但当我的应用程序尝试发送它时,它失败了
请在下面找到发送电子邮件的授权联系人。还没有重新考虑…对不起
public bool Send(string to, string toDisplayName, string subject, string body)
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://mandrillapp.com/api/1.0/messages/send.json");
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
try
{
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = string.Format(@"{{""key"": ""{0}"",""message"": {{""html"": ""{1}"",""subject"": ""{2}"",""from_email"": ""{3}"",""from_name"": ""AppCompear"",""to"": [{{""email"": ""{4}"",""name"": ""{5}"",""type"": ""to""}}],""important"": false}},""async"": false,""ip_pool"": ""Main Pool""}}"
, _setting.Password, body.Replace(@"""", @"\"""), subject, _setting.UserName, to, toDisplayName);
LogManager.Current.LogError(to, "", "", "", null, json);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
}
catch (WebException wex)
{
LogManager.Current.LogError(to, "", "", "", wex, wex.Message);
}
catch (Exception ex)
{
LogManager.Current.LogError(to, "", "", "", ex, ex.Message);
}
return true;
}
当然,它在试图得到响应时失败了
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
任何帮助都将不胜感激好的,在深入研究Mandrill API文档以寻找进行API调用时需要考虑哪些方面的线索(看起来并不是那么简单)之后,我决定安装一个NuGet包,它实际上是Mandrill API的.NET包装器 在做了一些调整后,代码看起来类似于以下内容
Mandrill.EmailMessage message = new Mandrill.EmailMessage();
message.from_email = _setting.UserName;
message.from_name = "Whatever";
message.html = body;
message.subject = subject;
message.to = new List<Mandrill.EmailAddress>()
{
new Mandrill.EmailAddress(to, toDisplayName)
};
Mandrill.MandrillApi mandrillApi = new Mandrill.MandrillApi(_setting.Password, false);
var results = mandrillApi.SendMessage(message);
foreach (var result in results)
{
if (result.Status != Mandrill.EmailResultStatus.Sent)
LogManager.Current.LogError(result.Email, "", "", "", null, string.Format("Email failed to send: {0}", result.RejectReason));
}
Mandrill.EmailMessage=new Mandrill.EmailMessage();
message.from_email=_setting.UserName;
message.from_name=“无论如何”;
message.html=正文;
message.subject=主题;
message.to=新列表()
{
新的Mandrill.EmailAddress(收件人,toDisplayName)
};
Mandrill.MandrillApi MandrillApi=新的Mandrill.MandrillApi(\u setting.Password,false);
var results=mandrillApi.SendMessage(消息);
foreach(结果中的var结果)
{
if(result.Status!=Mandrill.EmailResultStatus.Sent)
LogManager.Current.LogError(result.Email,“”,“”,“”,null,string.Format(“电子邮件发送失败:{0}”,result.RejectReason));
}
我从nuget添加了Mandrill.API,但找不到Mandrill.EmailMessage。。请告知?@user384080您是否添加了对Mandrill
名称空间的引用<代码>使用Madrill代码>