0

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

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

这是在 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);                  

        }
4

3 回答 3

2

当然,有一个构造函数重载,Attachment它接受 aStream而不是文件名。因此,例如,如果您有一个byte[]数据,您可以从中创建一个Attachment

var contentType new ContentType(MediaTypeNames.Text.Plain);
var attach = new Attachment(new MemoryStream(data), contentType);
于 2013-11-12T16:40:53.067 回答
0

PostedFile'InputStream直接传递给Attachment.

if (SaveDocument.HasFile)
{
        /* Create the email attachment with the uploaded file */
    System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(SaveDocument.PostedFile.InputStream, "filename");
        /* Attach the newly created email attachment */
    message.Attachments.Add(attach);                  

}

我还没有尝试过,但它应该可以工作。

于 2013-11-12T16:44:46.607 回答
0

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

看:

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

于 2013-11-12T16:40:09.870 回答