簡體   English   中英

Xlsio Excel 文件作為 Mailkit 附件

[英]Xlsio Excel file as Mailkit attachement

我正在使用 Mailkit 發送 email,我想發送一個創建的 Excel 文件(感謝 Xlsio)作為 Email 附件。

我成功發送了 email,我看到擴展名 (.xlsx) 很好的附件,但是當我想打開它時出現錯誤“格式或擴展名無效”。

這是我為創建 Excel 文件而編寫的代碼

FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
               
workbook.SaveAs(stream, ExcelSaveType.SaveAsXLS);
           
FileAttachementDto file = new()
{                    
      FileName = fileName,
      File = stream,      // Type of File property is Stream              
};

我為將文件添加到 email 附件而編寫的代碼

var attachements = MimeEntity.Load(
            new ContentType("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
            new MemoryStream(myFile.File.ReadAsBytes()));       

bodyBuilder.Attachments.Add(attachements);

謝謝

不要這樣做:

var attachements = MimeEntity.Load(
        new ContentType("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet"),
        new MemoryStream(myFile.File.ReadAsBytes()));

那是為了解析 HTTP web 響應。

只需這樣做:

var attachment = new MimePart ("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
    FileName = "fileName.xls",
    ContentTransferEncoding = ContentEncoding.Base64,
    Content = new MimeContent (new MemoryStream (myFile.File.ReadAsBytes ()))
};

建議您在保存Excel文檔前將工作簿版本設置為Xlsx,並去掉IWorkbook的SaveAs方法中的ExcelSaveType.SaveAsXLS參數。

代碼片段:

FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);    
workbook.Version = ExcelVersion.Xlsx;
workbook.SaveAs(stream);          

FileAttachementDto file = new()    
{
      FileName = fileName,    
      File = stream,      // Type of File property is Stream  
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM