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)); } }
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With