Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SMTP Send is locking up my files - c#

I have a function thats sending messages ( a lot of them) and their attachments.

It basically loops through a directory structure and creates emails from a file structure for example

 c:\emails\message01                 \attachments  c:\emails\message02                 \attachments 

The creation of the messages takes place using .net c#, standard stuff.

After all messages are created... I have another function that runs directly afterwards that copies the message folder to another location.

Problem is - files are locked...

Note: I'm not moving the files, just copying them....

Any suggestions on how to copy locked files, using c#?

Update

I have this add attachments method

    private void AddAttachments(MailMessage mail)     {         string attachmentDirectoryPath = "c:\messages\message1";         DirectoryInfo attachmentDirectory = new DirectoryInfo(attachmentDirectoryPath);         FileInfo[] attachments = attachmentDirectory.GetFiles();         foreach (FileInfo attachment in attachments)         {             mail.Attachments.Add(new Attachment(attachment.FullName));         }     } 
like image 384
JL. Avatar asked Aug 18 '09 20:08

JL.


1 Answers

How are you reading the files to create the email message? They should be opened as read-only, with a FileShare set to FileShare.ReadWrite... then they shouldn't be locked. If you are using a FileStream you should also wrap your logic in the using keyword so that the resource is disposed properly.

Update:

I believe disposing the mail message itself will close resources within it and unlock the files:

using (var mail = new MailMessage()) {     AddAttachments(mail); } // File copy code should work here 
like image 104
John Rasch Avatar answered Sep 20 '22 08:09

John Rasch