2013-10-09 52 views
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); 
} 
+0

你是如何將文件附加到消息? – Amy

回答

0

首先,嘗試處理您的smtpclient類:

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

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

但是,創建類的時候,你可以使用一個使用衆所周知聲明。

像:

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