Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP状态为500的Mandrill API响应_C#_Asp.net Mvc_Mandrill - Fatal编程技术网

C# HTTP状态为500的Mandrill API响应

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错误时正在发送该对象,并且发送的

我一直在尝试让我的MVC web应用程序使用Mandrill API订阅发送电子邮件,但没有成功。这个mandrillapi通过将
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