Excel 通过发送网格附件 C# 发送的文件已损坏

Excel file send through Send grid attachment C# is corrupted

我正在使用 sendgrid 发送带附件的邮件。但似乎 excel 文件在邮件中已损坏。这是我使用的代码

byte[] byteData = System.Text.Encoding.ASCII.GetBytes(File.ReadAllText(@"fullpath\test.xlsx"));

msg.Attachments = new List<SendGrid.Helpers.Mail.Attachment>
{
    new SendGrid.Helpers.Mail.Attachment
    {
        Content = Convert.ToBase64String(byteData),
        Filename = "test.xlsx",
        Type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        Disposition = "attachment"
    }
};

打开 excel 文件时,我收到一个弹出窗口“我们发现内容有问题...如果您信任,请单击“是”。如果是,Excel 无法打开此文件文件。任何人都可以帮我解决这个问题 #发送网格

试试下面

msg.AddAttachment("test.xlsx"); // Physical file path

确保文件路径相关

或者您也尝试使用字节,

var bytes = File.ReadAllBytes(filePath); 
var file = Convert.ToBase64String(bytes);
msg.AddAttachment("Name.xls", file);

此处为 Twilio SendGrid 开发人员布道师。

我认为问题可能是您通过将文件作为文本读取然后通过 ASCII 编码将该文本转换为字节来获取字节数据。最初只 read the file as bytes 可能会更好。

尝试:

byte[] byteData = File.ReadAllBytes(@"fullpath\test.xlsx");

msg.Attachments = new List<SendGrid.Helpers.Mail.Attachment>
{
    new SendGrid.Helpers.Mail.Attachment
    {
        Content = Convert.ToBase64String(byteData),
        Filename = "test.xlsx",
        Type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        Disposition = "attachment"
    }
};