发送电子邮件后移动文件

时间:2013-10-09 20:28:32

标签: smtpclient

我正在编写一个程序来查找文件夹中的文件,将文件附加到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);
}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

像:

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