通过SendGrid发送电子邮件附件c#失败
问题描述:
我正在使用Azure移动服务后端,我可以通过SendGrid成功发送电子邮件。但是,每次尝试添加附件时,都会失败。我从来没有收到电子邮件。经过一番研究,我发现我所需要的只是一条虚拟路径。我修改了路径名称,但它仍然不起作用。通过SendGrid发送电子邮件附件c#失败
我似乎无法弄清楚为什么会失败。
下面是我的代码:
var client = new SendGridClient("apiKey");
var msg = new SendGridMessage()
{
From = new EmailAddress(sender),
Subject = "Adherence Report",
PlainTextContent = "Sample Content ",
HtmlContent = "<strong>Hello, Email!</strong>"
};
msg.AddTo(new EmailAddress(receipient, null));
msg.AddAttachment(@"~\sample\adherence.csv", "Testing", null, null, null);
var response = await client.SendEmailAsync(msg);
答
我查了响应的内容,并意识到是有人失败,因为定时发送正在用400 BAD REQUEST
错误而被取消。
经过一番研究,我发现SendGrid网站上的这个链接mail errors。下安装误差的部分,它们解释
附件含量必须base64编码。
这就是我的依恋失败的原因。因此,最终得到它的工作,我编辑我的代码如下:
string sampleContent = Base64Encode("Testing"); // base64 encoded string
var client = new SendGridClient("apiKey");
var msg = new SendGridMessage()
{
From = new EmailAddress(sender),
Subject = "Adherence Report",
PlainTextContent = "Sample Content ",
HtmlContent = "<strong>Hello, Email!</strong>"
};
msg.AddTo(new EmailAddress(recipient, null));
msg.AddAttachment("myfile.csv", sampleContent, "text/csv", "attachment", "banner");
var response = await client.SendEmailAsync(msg);
事实证明这不是一个重复的问题,毕竟,因为我正面临着不同种类的问题通过SendGrid发送电子邮件。文件名也按原样工作。拨打Server.MapPath
对我来说不是必要的。
我能够成功接收附件邮件。
_“失败”_和_“不起作用”_不会让我们继续前进 - 您是否收到任何异常? SendGrid管理界面中是否存在问题?你检查过“响应”的内容吗? –
可能的重复。尝试Server.MapPath获取完整路径http://stackoverflow.com/questions/37945281/sending-an-email-with-attachment-using-sendgrid –
@JamesThorpe,迄今为止没有例外,我看到内部没有问题SendGrid接口。我打印出了响应的主体,这就是我的“响应”:“System.Net.Http.StreamContent”,“file”:“〜\\ sample \\ adherence.txt”}}。 – naffie