发送后删除附件文件



可能的重复:
删除附件文件


我试图在发送以下代码发送后自动删除文件:

        protected void btnSend_Click(object sender, EventArgs e)
        {
            //  Inserting attachment to the email
                using (Attachment data = new Attachment("C:\local\vCardGenerator.Website\" + "FirstName_LastName.vcf", MediaTypeNames.Application.Octet))
            {
            //  add Send E-mail class
                SendvCard smtp = new SendvCard();
            //  Calls method to class
                smtp.MailvCard("anonymous@domain.com", "C:\local\vCardGenerator.Website" + "\" + "FirstName_LastName" + ".vcf");
            }
            //  Status label + Delete file
            lblStatus.Text = "vCard Send to:" + " " + txtMail.Text;

//Delete file after being send as an attachment with the mail
            FileInfo DeleteFileInfo = new FileInfo("C:\local\vCardGenerator.Website" + "\" + "FirstName_LastName" + ".vcf");
            if (DeleteFileInfo.Exists)
                File.Delete("C:\local\vCardGenerator.Website" + "\" + "FirstName_LastName" + ".vcf");

在没有"自动删除"的情况下进行调试非常顺利,它甚至将电子邮件发送带有附件,但是当我发送附件时,我尝试删除附件时,我会收到以下错误弹出窗口:

该过程无法访问文件。(〜"路径"),因为它正在使用 另一个过程。

是否有人知道为什么会发生此错误?
我需要先处理文件吗?

愿意在需要时提供任何其他/更多信息。

预先感谢,

如果处理邮件消息,它将关闭其中的资源并解锁文件

SendvCard不是.NET框架的一部分,所以我不能肯定地告诉您,但是,我会在内部猜测它会创建一个MailMessage对象,该对象会锁定该对象依恋直到处置为止。另外,看起来您正在不必要地创建一个新的Attachment对象,因为据我所知,它没有被使用。

您需要做的是在之前处置 smtp对象您尝试删除附件,因此,如果SendvCard实现IDisposable,则代码可能看起来像:

using (var smtp = new SendvCard())
{
    //  Calls method to class
    smtp.MailvCard("anonymous@domain.com", "C:\local\vCardGenerator.Website" + "\" + "FirstName_LastName" + ".vcf");
}
//  Status label + Delete file
lblStatus.Text = "vCard Send to:" + " " + txtMail.Text;
//Delete file after being send as an attachment with the mail
FileInfo DeleteFileInfo = new FileInfo("C:\local\vCardGenerator.Website" + "\" + "FirstName_LastName" + ".vcf");
if (DeleteFileInfo.Exists)
    File.Delete("C:\local\vCardGenerator.Website" + "\" + "FirstName_LastName" + ".vcf");

我使用了不需要文件开始的附件构造函数之一。我写信给记忆播,将其重新打扫,然后将其提供给附件。

之后,我收到了另一个错误,这将是一个新线程。

我感谢大家的帮助和答案,即使我不需要它们。

相关内容

  • 没有找到相关文章

最新更新