发送电子邮件附件后删除c#中的文件

时间:2012-10-25 18:52:25

标签: c#

我有以下代码,基本上将文件附加到电子邮件消息然后附加所有附件并发送电子邮件后,我尝试删除所有文件,但是我得到一个正在使用的文件异常。我相信错误来自这一行

Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

我尝试使用此代码,但收到无法发送的电子邮件

using Attachment data = new Attachment(file, MediaTypeNames.Application.Octet)){
//and the rest of the code in here.

}


foreach (KeyValuePair<string, string> kvp in reports) {
    browser.GoTo(kvp.Value);
    Thread.Sleep(1000);

    System.IO.File.Move(@"C:\Reports\bidata.csv", @"C:\Reports\"+kvp.Key.ToString()+".csv");

    string file = @"C:\Reports\" + kvp.Key.ToString() + ".csv";

    Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

    // Add time stamp information for the file.
    ContentDisposition disposition = data.ContentDisposition;
    disposition.CreationDate = System.IO.File.GetCreationTime(file);
    disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
    disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
    // Add the file attachment to this e-mail message.

    mail.Attachments.Add(data);  
}

smtpserver.Send(mail);
string[] files = Directory.GetFiles(@"C:\Reports");
foreach (string files1 in files)
{
    File.Delete(files1);
}

2 个答案:

答案 0 :(得分:6)

首先要删除文件,你必须处理附件和邮件对象,然后删除文件

答案 1 :(得分:2)

将smtpclient置于使用中或直接调用dispose来处置它。这应该释放文件资源并允许你核对它。