SMTP Send sperrt meine Dateien - c #
Habe ich eine Funktion, das senden von Nachrichten ( viele von Ihnen) und Ihre Anhänge.
Es grundsätzlich durchläuft ein Verzeichnis und erstellt E-Mails aus einer Datei-Struktur, zum Beispiel
c:\emails\message01
\attachments
c:\emails\message02
\attachments
Die Erstellung der Nachrichten erfolgt über .net c#, standard-Sachen.
Nachdem alle Nachrichten erstellt... ich habe eine andere Funktion, läuft direkt danach, dass Kopien der Nachricht-Ordner an einen anderen Speicherort.
Problem - Dateien sind gesperrt...
Hinweis: ich bin nicht die Dateien zu verschieben, nur kopieren....
Irgendwelche Vorschläge, wie kopieren von gesperrten Dateien, die mithilfe von c#?
Update
Habe ich dieses add-Anhänge Methode
private void AddAttachments(MailMessage mail)
{
string attachmentDirectoryPath = "c:\messages\message1";
DirectoryInfo attachmentDirectory = new DirectoryInfo(attachmentDirectoryPath);
FileInfo[] attachments = attachmentDirectory.GetFiles();
foreach (FileInfo attachment in attachments)
{
mail.Attachments.Add(new Attachment(attachment.FullName));
}
}
InformationsquelleAutor der Frage JL. | 2009-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie liest du die Dateien zum erstellen der E-Mail-Nachricht? Sollten Sie als schreibgeschützt geöffnet, mit einem
FileShare
eingestelltFileShare.ReadWrite
... dann sollten Sie nicht gesperrt werden. Wenn Sie eineFileStream
sollten Sie auch wickeln Sie Ihre Logik in derusing
Schlüsselwort, so dass die Ressource ordnungsgemäß entsorgt.Update:
Ich glaube, dass die Entsorgung der E-mail-Nachricht selbst wird in der Nähe der Ressourcen innerhalb der it und die Dateien entsperren:
InformationsquelleAutor der Antwort John Rasch
hasse die Beantwortung meiner eigenen post, aber ja, für den nächsten Armen Kerl, der dieses problem hat, hier ist der fix:
NACHDEM SIE DIE NACHRICHT SENDEN
Entsorgen Sie die Anlagen... löscht die Sperre, und die Nachrichten werden immer noch mit Anhang geschickt. Entsorgen Sie NICHT die Dateien löschen, löscht einfach die Anhänge 🙂
InformationsquelleAutor der Antwort JL.
Schließen Sie die Dateien, nachdem Sie fertig sind Sie zu Lesen? Wenn Sie offen für das Lesen, aber nicht Sie zu schließen, wenn Sie fertig sind, bewahren Sie eine Sperre auf Sie, bis das Programm beendet und schließt automatisch alle Dateien.
InformationsquelleAutor der Antwort matthock
InformationsquelleAutor der Antwort dnxit
Sehe ich dies viel, wenn senden von Anlagen. Ich verwende normalerweise so etwas wie die folgenden:
In der code verschiebt die Dateien an einen anderen Speicherort, können Sie das folgende Muster verwenden:
Innerhalb der Schleife zum Durchlaufen der Dateien
InformationsquelleAutor der Antwort David