将文档附加到电子邮件

时间:2013-11-12 16:34:23

标签: c# asp.net email

是否可以将文档附加到电子邮件而不将其保存在服务器上?

以下代码仅在保存到服务器后才会附加。我正在寻找的是将文档附加到电子邮件而不先将其保存,而只是从提供的路径附加到电子邮件。

这是在Visual Studio 2005中使用c#

if (SaveDocument.HasFile)
        {
            /* Get a reference to PostedFile object */               
            string strFileName = Path.GetFileName(SaveDocument.PostedFile.FileName);
                /* Save the file on the server */
            SaveDocument.PostedFile.SaveAs(Server.MapPath(strFileName));
                /* Create the email attachment with the uploaded file */
            System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(Server.MapPath(strFileName));
                /* Attach the newly created email attachment */
            message.Attachments.Add(attach);                  

        }

3 个答案:

答案 0 :(得分:2)

当然,a constructor overload for Attachment接受Stream而不是文件名。因此,例如,如果您有byte[]个数据,则可以从中创建Attachment

var contentType new ContentType(MediaTypeNames.Text.Plain);
var attach = new Attachment(new MemoryStream(data), contentType);

答案 1 :(得分:0)

是的,只需使用获取流而不是文件名的构造函数。

请参阅:

http://msdn.microsoft.com/en-us/library/ab7hb4y5(v=vs.110).aspx

答案 2 :(得分:0)

PostedFile的{​​{1}}直接传递给InputStream

Attachment

我还没有尝试过,但它应该有用。