我正在Visual Studio 2017中创建Core 2.1解决方案,在这里我通过Sendgrid发送电子邮件。尝试通过SendGrid
发送电子邮件时,出现以下错误:
在处理请求时发生未处理的异常。
IOException:服务器返回了无效或无法识别的响应。 System.Net.Http.HttpConnection.FillAsync()HttpRequestException:错误 将内容复制到流中时。
System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(任务 serializeToStreamTask,MemoryStream tempBuffer)
这是我的代码的样子。我在参数中输入以下内容:
收件人:包含“ ****@gmail.com”的列表
主题:“您好”
正文:通过Heml生成的HTML。它可以在在线编辑器中编译而没有问题。
private async Task<bool> SendAsync(List<string> recipients, string subject, string body)
{
var client = new SendGridClient(this.configuration["Sendgrid:ApiKey"]);
var from = new EmailAddress(
this.configuration["Administration:MainEmailAddress"],
this.configuration["Administration:MainEmailName"]);
var tos = await GetRecipientsForEnvironment(recipients);
var message = MailHelper.CreateSingleEmailToMultipleRecipients(
from,
tos,
subject,
"",
body,
false);
var response = await client.SendEmailAsync(message);
return response.StatusCode == HttpStatusCode.Accepted;
}
此错误的原因是什么?
答案 0 :(得分:3)
事实证明,Sendgrid
中存在一个已知的错误。如果输入的html内容很大,则不会发送正确的错误消息。相反,将显示此错误。就我而言,找不到我的apiKey
,因此我应该收到一条Unauthorized
错误消息。当我将html更改为更小的HTML时,这给了我正确的错误。
详细了解问题here。
答案 1 :(得分:3)
我遇到了同样的问题,但就我而言,这是因为电子邮件配额已过期(我正在使用免费版本进行测试):
库版本9.21.0
在提到的主题上 https://github.com/sendgrid/sendgrid-csharp/issues/648,有些人通过了wrong apiKey
,而其他人则是exceeding the HTML size
。
如上面的线程所述,在解释错误时,这显然是sendgrid库中的错误。
因此,除了上述问题(传递了错误的apiKey,超出了HTML大小),返回“将内容复制到流时出错” 隐藏了其他问题问题(例如我的情况:quota expired
)。