c# - 来自内存流的电子邮件附件在 C# 中显示为空白

标签 c# .net email email-attachments memorystream

我可以在邮件中发送附件,但附件内容为空白且大小显示为 0 字节。

通过互联网搜索后发现我们需要将内存流位置重置为 0 才能从头开始。

我也试过了,但是好像不行。你能帮忙吗?

请在下面找到我的代码片段:

注意:我能够保存工作簿并且数据存在于保存的工作簿中。

        MemoryStream memoryStream = new MemoryStream();

        StreamWriter writer = new StreamWriter(memoryStream);
        writer.Write(xlWorkbook);
        writer.Flush();
        memoryStream.Position = 0;
        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtpclient");
        mail.From = new MailAddress("from@gmail.com");
        mail.To.Add("To@gmail.com");
        mail.Subject = "Entry";
        mail.Body = "Hello, PFA ";
        System.Net.Mail.Attachment attachment;

        attachment = new System.Net.Mail.Attachment(memoryStream,"xls");
        attachment.ContentDisposition.FileName = "Input" + DateTime.Now.ToString("yyyyMMdd_hhss") + ".xls";
        mail.Attachments.Add(attachment);
        SmtpServer.Port = 465;
        SmtpServer.UseDefaultCredentials = false;
        SmtpServer.Credentials = new System.Net.NetworkCredential("Username", "password");
        SmtpServer.EnableSsl = true;
        SmtpServer.Send(mail);
        writer.Dispose();

最佳答案

我认为附件混淆了邮件系统。 Microsoft 的建议是将内容类型指定为 octet。 .下面是初始化附件的替换。您的代码重置看起来不错。

string filename = "Input" + DateTime.Now.ToString("yyyyMMdd_hhss") + ".xls";
attachment = new System.Net.Mail.Attachment(memoryStream, filename, MediaTypeNames.Application.Octet);

关于c# - 来自内存流的电子邮件附件在 C# 中显示为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28454883/

相关文章:

c# - Windows 似乎无法跟踪 .NET 应用程序

c# - 如何在asp.net mvc3中显示图片

c# - 创建返回多条错误消息的自定义 ValidationAttribute 类

c# - 为什么System.IO是这样实现的

.net - 如何将可空类型转换为其基础类型?

javascript - 验证逗号分隔的电子邮件列表

email - PowerShell 邮件编码

java - LDAP 按电子邮件值搜索找不到记录

c# - 在 .net (C#) Windows 应用程序中从条码扫描仪读取数据!

c# - 将嵌套类转换为字典