0

我正在编写一个程序,它在文件夹中查找文件,将文件附加到 MailMessage 并使用 SmtpClient 发送电子邮件。

成功发送电子邮件后,我想将通过电子邮件发送的文件移动到不同的文件夹。

我收到此消息“该进程无法访问该文件,因为它正被另一个进程使用。”。我试过 Thread.Sleep() 但没有用。

smtpClient.Send(mail);

foreach (var report in reports)
{
    string source = Path.Combine(reportsFolder, report);
    string destination = Path.Combine(sentReportsFolder, report);
    File.Move(source, destination);
}
4

1 回答 1

0

首先,尝试处理您的 smtpclient 类:

smtpClient.Send(mail);
smtpClient.Dispose();

http://msdn.microsoft.com/pt-br/library/system.net.mail.smtpclient.dispose.aspx

但是,在创建类时,您可以使用 using 语句。

喜欢:

using (SmtpClient smtpClient = new SmtpClent()) {
  //attach file
  smtpClient.Send();
}

这将确保在发送电子邮件后,该类将释放任何可能被该类锁定的资源。因此,您不需要显式调用 .Dispose() 。

http://msdn.microsoft.com/pt-br/library/system.net.mail.smtpclient.aspx

http://msdn.microsoft.com/en-us/library/yh598w02.aspx

于 2013-10-09T20:48:12.470 回答