我有一个表格数据,我希望使用电子邮件发送。我可以成功发送和接收电子邮件,这样就没问题了。问题是电子邮件的附件。
我附上了一张csv。 csv是从Stream Writer创建的。当我打开这个文件时,如果我从流中创建了文件,我会得到一个不同的结果。如果在添加流之前将流位置设置为0,则csv文件将只写入21/30行。如果我没有重置该位置,它将不会写入任何行。当我查看我创建的文件时,所有条目似乎正常并且符合预期。
为什么?
using (FileStream memstream = File.Create(@"C:\Users\home\Desktop\" + "test.csv"))
{
using (StreamWriter writer = new StreamWriter(memstream))
{
data.ForEach(line =>
{
writer.WriteLine(string.Join(",", line));
});
MailMessage message = new MailMessage();
message.To.Add("home@local.com");
message.Subject = "Locations sent to home on " + DateTime.Today.AddDays(-1).ToString("MM-dd-yy");
message.From = new MailAddress("areport@reports.com");
memstream.Position = 0;
Attachment attachment = new Attachment(memstream, "report.csv");
message.Attachments.Add(attachment);
SmtpClient client = new SmtpClient("outbound@out.com");
client.Send(message);
}
}
答案 0 :(得分:2)
您的问题很可能是因为它在您关闭文件流之前尝试发送电子邮件。在关闭文件流后尝试发送。
答案 1 :(得分:0)
正如@jtimperley在评论中提到的那样,在您发送电子邮件之前,您的StreamWriter
没有被刷新,所以某些内容没有被写出来。
在Flush
上拨打writer
应修复此问题。
writer.Flush();
memstream.Position = 0;
Attachment attachment = new Attachment(memstream, "report.csv");
message.Attachments.Add(attachment);