JL.*_*JL. 23 c# smtp locked-files
我有一个功能,发送消息(很多)和他们的附件.
它基本上循环遍历目录结构,并从文件结构创建电子邮件
c:\emails\message01
\attachments
c:\emails\message02
\attachments
Run Code Online (Sandbox Code Playgroud)
使用.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));
}
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*sch 52
你是如何阅读文件来创建电子邮件的?它们应该以只读方式打开,FileShare设置为FileShare.ReadWrite......然后它们不应该被锁定.如果您正在使用a FileStream,则还应将您的逻辑包装在using关键字中,以便正确处理资源.
我相信处理邮件本身会关闭其中的资源并解锁文件:
using (var mail = new MailMessage())
{
AddAttachments(mail);
}
// File copy code should work here
Run Code Online (Sandbox Code Playgroud)
JL.*_*JL. 17
讨厌回答我自己的帖子,但是对于下一个有这个问题的可怜人来说是修复:
你发送消息之后
// Send the mail
client.Send(message);
//Clean up attachments
foreach (Attachment attachment in message.Attachments)
{
attachment.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
处理附件...清除锁定,消息仍将与附件一起发送.处理不删除文件,只清除附件:)
| 归档时间: |
|
| 查看次数: |
14910 次 |
| 最近记录: |