我有一个发送消息(很多消息)及其附件的功能。
它基本上遍历目录结构并从文件结构创建电子邮件
c:\emails\message01
\attachments
c:\emails\message02
\attachments
消息的创建使用 .net c#,标准的东西。
创建所有消息后...我有另一个功能可以直接运行,将消息文件夹复制到另一个位置。
问题是 - 文件被锁定...
注意:我不是移动文件,只是复制它们....
关于如何使用 C# 复制锁定的文件有什么建议吗?
更新
我有这个添加附件的方法
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));
}
}
最佳答案
您如何阅读文件以创建电子邮件?它们应该以只读方式打开,并将 FileShare
设置为 FileShare.ReadWrite
... 然后它们不应被锁定。如果您使用的是 FileStream
,您还应该将您的逻辑包装在 using
关键字中,以便正确处理资源。
更新:
我相信处理邮件消息本身会关闭其中的资源并解锁文件:
using (var mail = new MailMessage())
{
AddAttachments(mail);
}
// File copy code should work here
关于c# - SMTP 发送锁定我的文件 - c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296380/