0

我最近正在查看一段使用System.Net.Mail.Attachment将文件附加到电子邮件的代码。当前的实现是将附件作为文件存储到存储设备并为其赋予唯一的名称。然后将该文件附加到MailMessage中,如下所示:

Attachment data = new Attachment(filename);
message.Attachments.Add(data);

然后发送电子邮件,然后从存储设备中删除文件。

将文件存储在 MemoryStream (它已经是)中然后将其作为附件传递给电子邮件不是更快/更好吗?我会想象在 MailMessage 类的某个地方,文件被读入流并以相同的方式发送,并且将其存储到磁盘的整个过程是完全没有必要的。

我的直觉...写入磁盘是完全不合理的,应该实现使用流。(我错了吗?)

4

3 回答 3

4

是的,最好避免将其写入磁盘,除非出于其他原因需要该步骤。该类Attachment可以将流和文件名作为其构造函数的参数,而不是为其提供物理文件路径。

http://msdn.microsoft.com/en-us/library/6sdktyws.aspx

于 2012-06-01T13:24:41.943 回答
0

当然; Attachment甚至有一个接受流和名称的构造函数,因此可以完全删除将文件写入磁盘。

于 2012-06-01T13:25:24.983 回答
0

虽然这绝对是可能的,但在进行更改之前请考虑两件事: 1. 附件作为 MemoryStream 存在的时间。2.如果不写文件会很长,那么你的系统邮件吞吐量和内存压力也会增加。

于 2012-06-01T13:30:47.323 回答