我建立了一个发送电子邮件的WebApi。我还有一个每晚运行的控制台应用程序,生成一个基本报告,并通过API通过电子邮件发送给我。
这是完美的,直到有一天我不再收到电子邮件。 (我随机说,但我确定发生了一些事情 - 这就是我在这里的原因。)如果我发送一个简短的HtmlMessage,就像<h1>Hi!</h1>
那样有效,但是它实际生成的电子邮件越长,就会将服务器命中为null。我不确定我是否做了改变或者有什么打破了这个,但我绝对没有改变电子邮件的HTML中的任何内容。
我有一个Mailer课程:
public class Mailer
{
public string From { get; set; }
public string To { get; set; }
public string Subject { get; set; }
public string HtmlMessage { get; set; }
}
这是我的WebAPI:
[HttpPost]
[Route("api/sendmail")]
public void Sendmail(Mailer mailer) //public void Sendmail([FromBody] Mailer mailer) tried with and without [FromBody] and neither work
{
/* A bunch of code that doesn't matter */
}
以下是调用API的代码:
static void Main() {
string message;
/* a bunch of stuff that generates the message */
SendEmail(message);
}
static void SendEmail(string message) {
var data = new Mailer { From = "foo@foo.com", To = "timothy@foo.com", Subject = "Daily Report", HtmlMessage = message };
var data2 = new Mailer { From = "foo@foo.com", To = "timothy@foo.com", Subject = "Daily Report", HtmlMessage = "<h1 style=\"color: red;\">HI</h1>" };
// I was using new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(data); but changed to JSON.net as an attempt to fix
var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); // THIS DOES NOT WORK?! mailer in Sendmail is null.
//var json = Newtonsoft.Json.JsonConvert.SerializeObject(data2); // THIS WORKS?!
var url = "https://server.com/api/sendmail";
using (var client = new WebClient())
{
client.Headers.Add(_headers);
client.Headers.Add("Content-Type", "application/json");
client.UploadString(url, json);
}
}
任何帮助表示赞赏!提前谢谢!
答案 0 :(得分:1)
©
替换它,现在它完美无缺。
所以,问题是这个角色,我认为WebAPI拒绝或无法反序列化到Mailer类。
无论如何,这是固定的!希望这有助于其他人走出困境!