estoy usando System.Net.Mail para enviar correos electrónicos en asp.net .. cómo eliminar el archivo adjunto después de enviarlo como archivo adjunto ... intenté usar el método File.Delete ... pero recibo este error. el proceso no puede acceder a la ruta del archivo \ fun.jpg 'porque está siendo utilizado por otro proceso. graciasborrar el archivo adjunto
Respuesta
Eliminar el MailMessage cuando haya terminado con él. Todavía tiene un bloqueo en el archivo que ha agregado como archivo adjunto hasta que lo haya hecho.
var filePath = "C:\\path\\to\\file.txt";
var smtpClient = new SmtpClient("mailhost");
using (var message = new MailMessage())
{
message.To.Add("[email protected]");
message.From = new MailAddress("[email protected]");
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));
Salida: Falso
Me imagino que si usted todavía tiene algo de bloqueo del archivo después de desechar el mensaje, que es probable que tenga otro bloqueo en el archivo, pero sin código, que no puede dejar de tú.
No puede eliminar un archivo adjunto después de enviar el correo. Antes de enviar puede eliminar.
Lo que dice el error, la ruta que ha mencionado está utilizando algún otro proceso.
MailMessage Message = new MailMessage();
Message.Subject = "Attachment Test";
Message.Body = "Check out the attachment!";
Message.To.Add("[email protected]");
Message.From = "[email protected]";
Message.Attachments.Add(new Attachment(memorystream, "test.txt", MediaTypeNames.Application.Text));
en cuenta que hemos creado el archivo adjunto desde el MemoryStream y llegamos a nombrar el archivo adjunto nada que queremos. El nombre del archivo adjunto en el segundo parámetro es el nombre del archivo en el correo electrónico, no el nombre en el disco duro del sistema local. De hecho, el archivo adjunto nunca va al disco duro local. El tercer parámetro es el tipo de Mime del archivo adjunto, en nuestro caso esto es texto.
Editar: use Dispose() the mail
Ampliación de la clase MailMessage es una buena manera de resolver esto y reducir las posibilidades de encontrarse con este problema de nuevo ...
class MyMailMessage : MailMessage, IDisposable
{
private List<string> _tempFiles = new List<string>();
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));
}
}
... y recuerda utilizar con un 'utilizar' constructo (que usted debe utilizar de todos modos) ...
using(SmtpClient client = GetMySmtpClient())
using(MyMailMessage msd = new MyMailMessage())
{
msg.Attach(filename);
client.send(msg);
}
Sólo tiene que disponer el objeto de mensaje antes de borrar el archivo. Por ejemplo:
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!
Si el correo tiene un montón adjuntos
List<Attachments> lstAtt = new List<Attachments>();
Attachment att = new Attachment(file);
lstAtt.Add(att);
//finally
foreach(var a in lstAtt)
{
a.Dispose();
}
//delete file
- 1. imap - obtener archivo adjunto
- 2. HTML en el archivo adjunto iCal
- 3. Elasticsearch: Resaltar hits desde el archivo adjunto
- 4. Enviar archivo cargado como archivo adjunto
- 5. ¿Cómo subir un archivo (archivo adjunto) desde el navegador?
- 6. Enviar un archivo como archivo adjunto en el objetivo c
- 7. Borrar el archivo de registro de git
- 8. ¿Cómo puedo borrar el archivo log log?
- 9. Agregar un archivo adjunto a .NET Email
- 10. paperclip + ActionMailer - ¿Agregar un archivo adjunto?
- 11. Cómo implementar Content-Disposition: archivo adjunto?
- 12. enviar correo electrónico con el archivo adjunto en PDF
- 13. El archivo adjunto de correo electrónico del MemoryStream viene vacío
- 14. Android: obtenga el nombre del archivo adjunto en mi aplicación
- 15. Clip de papel no se pudo guardar el archivo adjunto
- 16. Envío de correo electrónico con el archivo adjunto
- 17. Enviando archivo a un navegador como archivo adjunto
- 18. Problema de archivo adjunto de correo electrónico de archivo binario
- 19. Mensaje de error: el archivo adjunto fuente no contiene el origen del archivo ListView.class
- 20. enviar correo electrónico con archivo adjunto en php sin guardar el archivo en el servidor web
- 21. ¿Cómo enviar el archivo pdf generado como archivo adjunto en el correo electrónico desde C#?
- 22. Ant: Cómo compilar el archivo jar que incluye el archivo adjunto fuente
- 23. Paperclip no se ha llamado al cargar el archivo adjunto, por lo que no se guarda el archivo adjunto. Rails3 + uploadify
- 24. cómo agregar el archivo .vcf como archivo adjunto en la aplicación iphone
- 25. EPPlus con MemoryStream como archivo adjunto de correo electrónico: el archivo está vacío
- 26. PHP ¿Enviar correo electrónico con archivo PDF adjunto sin crear el archivo?
- 27. ¿Cómo borrar el archivo de almacenamiento interno en android?
- 28. Cómo borrar el texto existente en un archivo
- 29. ¿Cómo borrar el contenido del archivo de texto en Python?
- 30. Es responsabilidad del programador borrar el archivo temporal
creo que es necesario disponer los objetos de apego. – anishMarokey