2013-10-09 6 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

Но, при создании класса, можно использовать с помощью 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

Смежные вопросы