创建.xls文件和On the Spot将与C#一起发送

时间:2014-12-03 12:22:19

标签: c# email-attachments

目前我刚刚创建了一个可以发送.xls文件的程序,我使用了google smtp服务器,所以我已经可以在我的程序中用该服务器发送电子邮件了。在我的程序中,基于我的日期,我可以使用今天的日期和时间创建.xls文件。我想知道的是这个文件将被用作电子邮件的附件。我怎么能这样做?

目前我的文件名是DateTime.Now.ToString("yyyyMMdd_hhss") + ".xls",因此我可以根据今天的日期和时间进行创建。我如何检索用作电子邮件附件的文件名?

1 个答案:

答案 0 :(得分:0)

我假设您使用的是System.Net.Mail命名空间中的.NET默认Emal api。

您可以将文件作为attachment添加到System.Net.Mail.MailMessage对象。

System.Net.Mail.Attachment类接受一个构造函数,该构造函数可以获取您可能用于创建xls文件的流。因此,如果您动态创建excel文件,您可能已经引用了写入它的流。然后你需要使用下面的代码:

using (Stream myXlsFileStream = new MemoryStream())
{
    // assumig you populate the stream like this...
    WriteXlsToStream(myXlsFileStream);
    myXlsFileStream.Flush();


    MailMessage message = new MailMessage();
    // configure mail message contents ...
    using (Attachment xlsAttachment = new Attachment(
            myXlsFileStream, 
            "FileNameToAppearInEmail.xls", 
            "application/xls"))
    {
        message.Attachments.Add(xlsAttachment);

        // send the message
    }
}

请注意,不得关闭流,并且应该已将所有数据写入其中。在添加附件之前,您可能需要调用myXlsFileStream.Flush()(如上面的代码所示),以确保文件完全写入。