繁体   English   中英

在C#中从byte []到MemoryStream创建多个附件

[英]Creating Multiple Attachments from byte[] to MemoryStream in C#

我正在使用MVC开展Web项目,该项目要求我从组合框中选择多个值(城市)并返回从SQL中提取的数据,并根据数据构建字符串。 然后,它通过MemoryStream发送到byte []流以附加到电子邮件附件是“.csv”格式。 当我选择,比方说“3”城市并将其发送到我的行动时,只有第一个附件有数据。 创建了其他两个附件,但是当我打开电子邮件时附件是空白的。

以下是代码片段:

    using (MailMessage message = new MailMessage())
    using (SmtpClient client = new SmtpClient())
    {
        client.Host = "smtp.mymailserver.com";
        client.Credentials = new System.Net.NetworkCredential("me@myemail.com", "mypass");
        message.From = new MailAddress("maintenance@myemail.com");
        message.To.Add(new MailAddress("justme@myemail.com"));

        // split up the delimited locations into the list
        List<String> listStrLineElements = LocationName.Split(',').ToList();

        System.IO.MemoryStream ms = new System.IO.MemoryStream();

        foreach (var loc in listStrLineElements)
        {
            System.IO.StreamWriter writer = new System.IO.StreamWriter(ms);

            writer.Write(EmailAttachmentAdmin(loc, StartDate, EndDate), 0, EmailAttachmentAdmin(loc, StartDate, EndDate).Length); // this just gets my data as a concatenated string.

            writer.Flush();
            ms.Position = 0;

           message.Attachments.Add(new Attachment(ms, loc.ToUpper() + "__" + StartDate.Month.ToString() + "-" + StartDate.Year.ToString() + "-TO-" + EndDate.Month.ToString() + "-" + EndDate.Year.ToString() + ".csv", "text/csv"));
        }

        message.Subject = "TEST NOTIFICATION: Monthly Maintenance Report Submitted for: " + LocationName;
        message.IsBodyHtml = true;
        message.Priority = MailPriority.High;

       client.Send(message);

    }

“EmailAttachmentAdmin”是一个字符串方法,我调用它来构建数据字符串。 我检查了SQL中的数据,实际上有数据。 另一个测试是选择一个城市/位置,以查看附件是否包含在电子邮件中并且已成功填充。 有人可以跳进来告诉我我做错了什么吗? 谢谢。

我解决了我的问题,这似乎与MemoryStream或编写器无关。 我的问题是我需要在“分裂”中“修剪”()后面的空格。 因此,当我的代码在寻找位置时,它无法找到它。 例如,我需要处理位置“El Paso”的数据,但如果它是在拆分中第一次出现之后,那么它应该是“El Paso”。 我的switch / case语句找不到该事件,因此它将数据处理为“空白”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM