从 MemoryStream 创建 MailMessage 附件
Creating MailMessage Attachment from MemoryStream
我正在使用 NPOI 从模板创建 excel 报告,将工作簿写入 MemoryStream,然后将其附加到 C# 中的 MailMessage。我的报告正在生成 OK,我可以看到它在调试中很好地拾取了工作表。但是当我将它写入 MemoryStream 并尝试附加它时,附件对象显示 Size: -1 under ContentDisposition 属性。我认为将 MemoryStream 对象 reader 位置设置为 0 可以解决这个问题,但没有成功。
MailMessage mm = new MailMessage("DoNotReply@testmail.com", "myself@testmail.com");
mm.Subject = "Reports for October, 2015";
mm.Body = "Attached below is the report.";
using (var memStream = new MemoryStream())
{
HSSFWorkbook closedReport = getClosedReport();
closedReport.Write(memStream);
memStream.Position = 0;
Attachment att1 = new Attachment(memStream, "ClosedReport.xls");
att1.ContentType = new System.Net.Mime.ContentType("application/vnd.ms-excel");
mm.Attachments.Add(att1);
memStream.Close();
}
我的 MemoryStream 对象的长度为 30,720,因此我相信正在向其写入报告。
在单元测试项目中尝试使用此代码片段,我无法让 ContentDisposition 属性 从 -1 更改。
然而,是否让 MemoryStream 填充了数据,并且在 memStream.Position = 0
和 memStream.Seek(0, SeekOrigin.Begin);
之间切换似乎没有帮助。
我确实注意到 memStream.Close 正在清除 Attachment.ContentStream 属性。
尝试在关闭存储附件数据的内存流之前发送消息。
我正在使用 NPOI 从模板创建 excel 报告,将工作簿写入 MemoryStream,然后将其附加到 C# 中的 MailMessage。我的报告正在生成 OK,我可以看到它在调试中很好地拾取了工作表。但是当我将它写入 MemoryStream 并尝试附加它时,附件对象显示 Size: -1 under ContentDisposition 属性。我认为将 MemoryStream 对象 reader 位置设置为 0 可以解决这个问题,但没有成功。
MailMessage mm = new MailMessage("DoNotReply@testmail.com", "myself@testmail.com");
mm.Subject = "Reports for October, 2015";
mm.Body = "Attached below is the report.";
using (var memStream = new MemoryStream())
{
HSSFWorkbook closedReport = getClosedReport();
closedReport.Write(memStream);
memStream.Position = 0;
Attachment att1 = new Attachment(memStream, "ClosedReport.xls");
att1.ContentType = new System.Net.Mime.ContentType("application/vnd.ms-excel");
mm.Attachments.Add(att1);
memStream.Close();
}
我的 MemoryStream 对象的长度为 30,720,因此我相信正在向其写入报告。
在单元测试项目中尝试使用此代码片段,我无法让 ContentDisposition 属性 从 -1 更改。
然而,是否让 MemoryStream 填充了数据,并且在 memStream.Position = 0
和 memStream.Seek(0, SeekOrigin.Begin);
之间切换似乎没有帮助。
我确实注意到 memStream.Close 正在清除 Attachment.ContentStream 属性。
尝试在关闭存储附件数据的内存流之前发送消息。