发送带附件的电子邮件后,我遇到了问题。 发送此文件后,我想删除此文件,并且该进程被拒绝,因为另一个进程正在使用我要删除的文件。
这是我得到的消息: “该进程无法访问文件'C:\ Users \ x \ AppData \ Roaming \ ipconfig.txt',因为它正由另一个进程使用。”
我有一些代码:
public static void SendAnEmail(string host, string username, string password, string mailTo, string subject, string body, List<string> attachmentsFileNames)
{
SmtpClient client = new SmtpClient();
client.Port = 587;
client.Host = host;
client.EnableSsl = true;
client.Timeout = 60000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(username, password);
MailMessage mailMessage = new MailMessage(username, mailTo, subject, body);
foreach(string singleAttachmentFileName in attachmentsFileNames)
{
Attachment attachment = new Attachment(singleAttachmentFileName, "text/plain");
mailMessage.Attachments.Add(attachment);
}
mailMessage.BodyEncoding = UTF8Encoding.UTF8;
mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
}
这是SendAnEmail函数的调用,并尝试删除我作为附件发送的文件。
Transport.SendAnEmail(Settings.mailHost, Settings.mailUsername, Settings.mailPassword, Settings.mailTargetAddress, Settings.ftpDirectory, " ", Settings.attachmentsListFileNames);
foreach(string singlePath in Settings.attachmentsListFileNames)
File.Delete(singlePath);
我想建议如何解决此问题,并在发送带附件的电子邮件后删除这些附件。
如果不清楚,请问我。
编辑: 当然,我正在使用C#,框架4.5,WPF。目标平台是Windows,用于编程的环境是Visual Studio 2013:)
答案 0 :(得分:0)
在删除之前,您必须这样做:
mailMessage.Attachments.Dispose();
client.Dispose();
它对我有用。