我最近在查看使用System.Net.Mail.Attachment将文件附加到电子邮件的一段代码。当前的实现是将附件作为文件存储到存储设备并为其提供唯一的名称。然后将此文件附加到MailMessage,如下所示:
Attachment data = new Attachment(filename);
message.Attachments.Add(data);
然后发送电子邮件,然后从存储设备中删除该文件。
将文件存储在MemoryStream(它已经存在)中,然后将其作为电子邮件的附件传递,这不是更快/更好吗?我想在MailMessage类中的某个地方,文件被读入一个流并以相同的方式发送,并且将它存储到磁盘的整个过程是完全没必要的。
我的直觉......写入磁盘是完全不同的,应该实现使用流。 (我错了吗?)
答案 0 :(得分:4)
是的,最好避免将其写入磁盘,除非出于其他原因需要执行该步骤。 Attachment
类可以将流和文件名作为其构造函数的参数,而不是为其提供物理文件路径。
答案 1 :(得分:0)
不确定; Attachment
甚至有一个带有流和名称的构造函数,因此可以完全删除将文件写入磁盘。
答案 2 :(得分:0)
虽然这绝对是可能的,但在进行更改之前请考虑以下两点:1。附件作为MemoryStream存在的时间。 2.如果没有编写文件会更长,那么你的系统邮件吞吐量和内存压力也会增加。