我正在尝试使用 RestSharp 从新的桌面 API 调用 outbound_email 端点。
我希望它发送一封包含附件的电子邮件。
如果我不包含附件,我可以成功发布到端点,并且我确实收到了电子邮件,但是当我包含附件时,它会失败,指出错误的请求。
我能够让它在 Postman 中正常工作,所以我想知道我添加的文件是否格式错误或其他什么,但在浏览 API 文档时找不到任何内容。
这是我的代码:
var client = new RestClient(outboundEmail);
var request = new RestRequest("", Method.Post);
request.AddHeader("Authorization", "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(apiKey + ":X")));
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "multipart/form-data");
request.AddFile("attachments[]", "filePath");
request.AddParameter("email", myEmail);
request.AddParameter("subject", subject);
request.AddParameter("description", description);
request.AddParameter("status", status);
request.AddParameter("priority", priority);
request.AddParameter("email_config_id", emailConfigID);
var response = client.Execute(request);
它给我的错误是:
“描述”:“验证失败”,“错误”: [{“字段”:“电子邮件 ","message":"请求中存在意外/无效字段","code":"invalid_field"}, {“字段”:“主题 ","message":"请求中存在意外/无效字段","code":"invalid_field"},{"field":"description ","message":"请求中存在意外/无效字段","code":"invalid_field"},{"field":"status ","message":"请求中存在意外/无效字段","code":"invalid_field"},{"field":"优先级 ","message":"请求中存在意外/无效字段","code":"invalid_field"},{"field":"email_config_id ","message":"请求中存在意外/无效字段","code":"invalid_field"}]}"
我也尝试过使用 httpClient 而不是 Rest Sharp,但仍然遇到相同的错误。
用requestbin检查我的请求后,我可以看到postman请求和restsharp请求之间的区别在于,postman中参数的名称用引号“email”括起来,而restsharp请求没有它们在引号中。
为了解决这个问题,我在 :
中强制加了引号 request.AddParameter("\"email\"", myEmail);
request.AddParameter("\"subject\"", subject);
request.AddParameter("\"description\"", description);
request.AddParameter("\"status\"", status);
request.AddParameter("\"priority\"", priority);
request.AddParameter("\"email_config_id\"", emailConfigID);