ich benutze System.Net.Mail für das Senden von Mail in asp.net .. wie Anlage Datei löschen, nachdem es als Anhang Mail gesendet wird .. Ich habe versucht, File.Delete-Methode zu verwenden .. aber Ich bekomme diesen Fehler .. der Prozess kann nicht auf die Datei Pfad \ fun.jpg zugreifen, weil es von einem anderen Prozess verwendet wird. dankeAnlage Datei löschen
Antwort
Entsorgen Sie das Mailmessage, wenn Sie mit ihm fertig sind. Es hat immer noch eine Sperre für die Datei, die Sie als Anhang hinzugefügt haben, bis Sie dies getan haben.
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));
Ausgabe: False
Ich könnte mir vorstellen, dass, wenn Sie noch etwas Sperren der Datei haben, nachdem die Nachricht entsorgen, dass Sie wahrscheinlich eine andere Sperre auf die Datei haben, aber ohne Code, können wir nicht helfen Sie.
Sie können eine angehängte Datei nach dem Senden der Mail nicht löschen. Vor dem Senden können Sie löschen.
Der Fehler besagt, dass der von Ihnen erwähnte Pfad einen anderen Prozess verwendet.
Beachten Sie, dass wir den Anhang aus dem MemoryStream erstellt haben und wir den Anhang benennen können, was wir wollen. Der Name des Anhangs im zweiten Parameter ist der Name der Datei in der E-Mail, nicht der Name auf der lokalen Systemfestplatte. Tatsächlich geht der Anhang niemals auf die lokale Festplatte. Der dritte Parameter ist der Mime-Typ des Anhangs, in unserem Fall ist dies Text.
Edit: use Dispose() the mail
die Mailmessage-Klasse erweitern ist ein guter Weg, dies zu lösen und die Chancen des Laufens in dieses Problem wieder zu reduzieren ...
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));
}
}
... und erinnern mit einem ‚mit‘ Konstrukt zu verwenden (die sollten Sie trotzdem verwenden) ...
using(SmtpClient client = GetMySmtpClient())
using(MyMailMessage msd = new MyMailMessage())
{
msg.Attach(filename);
client.send(msg);
}
Sie müssen nur das Nachrichtenobjekt entsorgen, bevor Sie die Datei löschen. Z. B:
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!
Wenn Ihr Mail-Anhänge Lose haben
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. Datei beim Löschen löschen sys_file_reference
- 2. Sharepoint Workflow Aufgaben Anlage
- 3. nodemailer keine Anlage senden
- 4. Castle Windsor Logging-Anlage
- 5. Meteor mail Tropfen Anlage
- 6. CDO Beschädigte PDF-Anlage
- 7. Anlage hinzufügen mailto Outlook
- 8. Wie gmail wie Datei-Upload/Anlage implementieren mit HTML 5
- 9. Python senden E-Mail, aber meine Anlage Datei funktioniert nicht
- 10. Excel Senden als Anlage sendet zwischengespeicherte Version der Datei
- 11. Eine Datei als Anlage in Ziel c senden
- 12. Konvertieren von Bilddatei von Anlage in Pdf-Datei in Python
- 13. Php E-Mail Anlage Extraktion
- 14. PHPMailer, schickte Anlage als anderer Name
- 15. Return Anlage mit $ .ajax Anruf
- 16. Linq to XML Anlage Attribut
- 17. Anlage Feld in MS Access
- 18. Messagebox Dialog ohne Anlage Schalt
- 19. Erstellen Sie eine herunterladbare Anlage von JavaScript?
- 20. Datei löschen obj c
- 21. eine unfertige Datei löschen
- 22. Ausgewählte Datei löschen JFileChooser
- 23. CSV-Datei löschen Matlab
- 24. Ruby-Datei löschen Gurke
- 25. Datei löschen und aufzeichnen
- 26. ändern Name der Anlage, wenn die Dateifreigabe
- 27. Upload sendfile Datei als Anlage und laden Sie die Datei in PHP
- 28. Powershell 5.0 Send-Mailmessage mit Anlage
- 29. Anlage per Formular mit PHPMailer senden
- 30. Löschen einer Datei mit PHP
Ich glaube, Sie die Befestigungs Objekte entsorgen müssen. – anishMarokey