Ohne Outlook und Co Anhänge aus vielen gespeicherten Mails .eml rauskopieren
Hallo, in einem Ordner liegen mehrere Unterordner (ca. 350 Stück), in denen wieder mehrere MSG1.eml, MSG2.eml liegen. Die .eml enthalten meist mehrere Anhänge - und genau um die geht es. Die Dateinamen der Anhänge haben manchmal auch den gleichen Namen. Ich suche eine Möglichkeit, diese Anhänge alle in einem einzigen Ordner zu kopieren, trotz eventueller Namensgleichheit. Ich habe 2 Probleme: Wie bekommt man die Anhänge aus der eml? Natürlich ohne Outlook, weil da müsste ich jede eml einzeln öffnen und die Anhänge speichern - das sind tausende!
Ich denke das ist auch eine Sache, welche entwickelt werden müsste. Ansatzweise habe ich schon per PHP, C und Visual Basic etwas probiert, bisher erfolglos.
Hat jemand eine Idee, einen Lösungsansatz oder vielleicht eine kleines Tool ? Der EML Viewer kann nicht mit gleichen Dateinamen umgehen, der überschreibt die vorhanden...
Vielen Dank, Ulfonso
Ich denke das ist auch eine Sache, welche entwickelt werden müsste. Ansatzweise habe ich schon per PHP, C und Visual Basic etwas probiert, bisher erfolglos.
Hat jemand eine Idee, einen Lösungsansatz oder vielleicht eine kleines Tool ? Der EML Viewer kann nicht mit gleichen Dateinamen umgehen, der überschreibt die vorhanden...
Vielen Dank, Ulfonso
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 311203
Url: https://administrator.de/contentid/311203
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
7 Kommentare
Neuester Kommentar
Da das nette Programm Kommandozeilenaufrufe beherrscht, kannst du in Kombination mit diesem Thread das problemlos lösen.
Gruß Krämer
Gruß Krämer
Hi.
Sure you can do that within Outlook and VBA, just import all mails into outlook, than you can iterate over all mails check them for attachments (Attachments-Property) extract them, then extract the attachments with the commandline-tool to a temp directory and then copy them into one directory (when a file with the same name exists, append a counting number with a while loop).
Regards
Sure you can do that within Outlook and VBA, just import all mails into outlook, than you can iterate over all mails check them for attachments (Attachments-Property) extract them, then extract the attachments with the commandline-tool to a temp directory and then copy them into one directory (when a file with the same name exists, append a counting number with a while loop).
Regards
Hallo zusammen,
das geht auch mit Bordmitteln und Outlook COM-Automation.
Hier ein passendes Powershell-Skript (VBA/VBS hatte ich gerade keine Böcke )
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Tags: EML, Outlook
das geht auch mit Bordmitteln und Outlook COM-Automation.
Hier ein passendes Powershell-Skript (VBA/VBS hatte ich gerade keine Böcke )
# Ordner der die EML-Dateien enthält
$rootFolder = 'D:\Mails'
# Ordner in den die Attachments kopiert werde
$attachmentFolder = 'D:\Attachments'
# Outlook COM-Object holen
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")
$ol = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")
if (!$ol){$ol = New-Object Outlook.Application}
# Für jede EML-Datei im Ordner (inkl. Unterordner)
gci $rootFolder -Filter *.eml -recurse | ?{!$_.PSIsContainer} | %{
# öffne die EML-Datei mit Outlook
start-process outlook.exe -ArgumentList "/eml `"$($_.FullName)`""
# warten bis inspector die mail geöffnet hat
while (!$ol.ActiveInspector().CurrentItem){sleep .2}
# mail referenzieren
$mail = $ol.ActiveInspector().CurrentItem
# Attachments extrahieren
$mail.Attachments | ?{$_.FileName -ne ''} | %{
$name = $_.FileName
# prüfe ob attachment schon im Zielordner existiert. Falls ja hänge einen Zufallswert in Klammern an den namen 'Attachment(xxxxx).Extension'
while((Test-path "$attachmentFolder\$name")){
$name = "$([System.IO.Path]::GetFileNameWithoutExtension($name))($([System.IO.Path]::GetRandomFileName().split('.')))$([System.IO.Path]::GetExtension($name))"
}
write-host "Speichere Attachment mit dem Namen '$($_.FileName)' als '$("$attachmentFolder\$name")'" -F Green
# Attachment speicern
$_.SaveAsFile("$attachmentFolder\$name")
}
# Mail schließen
$mail.Close($false) | out-null
}
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Tags: EML, Outlook
Schön .
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.