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

发送电子邮件附件后删除c#中的文件,c#,C#,我有下面的代码,基本上附加一个文件到一封电子邮件,然后在所有附件都附加和电子邮件发送后,我尝试删除所有文件,但我得到一个文件在使用中的例外。我相信错误就在这一行 Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); 我尝试使用此代码,但收到无法发送的电子邮件消息 using Attachment data = new Attachment(file, MediaTypeNames.Applicatio

我有下面的代码,基本上附加一个文件到一封电子邮件,然后在所有附件都附加和电子邮件发送后,我尝试删除所有文件,但我得到一个文件在使用中的例外。我相信错误就在这一行

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);
}
使用附件数据=新附件(文件MediaTypeNames.Application.Octet)){
//剩下的代码在这里。
}
foreach(报告中的KeyValuePair kvp){
browser.GoTo(kvp.Value);
睡眠(1000);
System.IO.File.Move(@“C:\Reports\bidata.csv”,@“C:\Reports\”+kvp.Key.ToString()+“.csv”);
字符串文件=@“C:\Reports\”+kvp.Key.ToString()+“.csv”;
附件数据=新附件(文件,MediaTypeNames.Application.Octet);
//为文件添加时间戳信息。
ContentDisposition=data.ContentDisposition;
disposition.CreationDate=System.IO.File.GetCreationTime(文件);
disposition.ModificationDate=System.IO.File.GetLastWriteTime(文件);
disposition.ReadDate=System.IO.File.GetLastAccessTime(文件);
//将文件附件添加到此电子邮件。
邮件.附件.添加(数据);
}
发送(邮件);
string[]files=Directory.GetFiles(@“C:\Reports”);
foreach(文件中的字符串files1)
{
删除(files1);
}

通过将smtpclient放入usings或直接调用Dispose来处理它。这将释放文件资源并允许您对其进行核爆。

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