删除附件文件
我正在使用System.Net.Mail在asp.net中发送邮件..如何在附件邮件发送后删除附件文件..我试图使用File.Delete方法..但我收到此错误..进程无法访问文件路径 fun.jpg’,因为它正由另一个进程使用。 谢谢
完成后处理MailMessage。 它仍然锁定您作为附件添加的文件,直到您这样做。
var filePath = "C:\path\to\file.txt"; var smtpClient = new SmtpClient("mailhost"); using (var message = new MailMessage()) { message.To.Add("to@domain.com"); message.From = new MailAddress("from@domain.com"); message.Subject = "Test"; message.SubjectEncoding = Encoding.UTF8; message.Body = "Test " + DateTime.Now; message.Attachments.Add(new Attachment(filePath)); } if (File.Exists(filePath)) File.Delete(filePath); Console.WriteLine(File.Exists(filePath));
输出:错误
我想如果你在处理完邮件后还有一些锁定文件的东西,你可能还有另一个锁定文件,但没有代码,我们无法帮助你。
发送邮件后,您无法删除附件。在发送之前,您可以删除。
错误说的是,你提到的路径是使用其他一些过程。
MailMessage Message = new MailMessage(); Message.Subject = "Attachment Test"; Message.Body = "Check out the attachment!"; Message.To.Add("webmaster@15Seconds.com"); Message.From = "someone@somedomain.com"; Message.Attachments.Add(new Attachment(memorystream, "test.txt", MediaTypeNames.Application.Text));
请注意,我们从MemoryStream创建了附件,我们必须将附件命名为我们想要的任何名称。 第二个参数中附件的名称是电子邮件中文件的名称,而不是本地系统硬盘驱动器上的名称。 事实上,附件永远不会进入本地硬盘驱动器。 第三个参数是附件的Mime类型,在我们的例子中,这是文本。
编辑: use Dispose() the mail
扩展MailMessage类是解决此问题的好方法,并再次降低遇到此问题的可能性……
class MyMailMessage : MailMessage, IDisposable { private List _tempFiles = new List (); public void Attach(string filename) { base.Attachments.Add(new Attachment(filename)); this._tempFiles.add(filename); } new public void Dispose() { base.Dispose(); this._tempFiles.Foreach(x => File.Delete(x)); } }
…并且记得使用’using’结构(无论如何你应该使用它)……
using(SmtpClient client = GetMySmtpClient()) using(MyMailMessage msd = new MyMailMessage()) { msg.Attach(filename); client.send(msg); }
您只需在删除文件之前处置消息对象。 例如:
Dim message As New MailMessage message.From = New MailAddress(fromEmail, fromName) message.Subject = subject message.CC.Add(toCCEmail) message.Bcc.Add(toBCCEmail) Dim attach As Attachment = New Attachment(attachmentPath) message.Attachments.Add(attach) message.IsBodyHtml = True message.Body = body mailClient.Send(message) message.Dispose() 'Add this line to dispose the message!
如果您的邮件有很多附件
上述就是C#学习教程:删除附件文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
List lstAtt = new List (); Attachment att = new Attachment(file); lstAtt.Add(att); //finally foreach(var a in lstAtt) { a.Dispose(); } //delete file
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/953093.html