Importieren Sie E-Mails aus dem Claws IMAP-Cache

850
calandoa

Ich versuche, ein IMAP-Konto aus vielen Ordnern aus dem internen Cache von Claws Mail zu importieren. Leider kann Claws nicht alle Ordner durch Auswahl des Root-Kontos exportieren.

Bei der Überprüfung des internen Claws-Cache-Ordners handelt es sich bei jeder Mail um eine Textdatei, die wie folgt benannt wird:

base_path/My Account/Folder ABC/1 base_path/My Account/Folder ABC/2 base_path/My Account/Folder ABC/3 base_path/My Account/Folder ABC/4  base_path/My Account/Folder DEF/1 base_path/My Account/Folder DEF/2 base_path/My Account/Folder DEF/3  base_path/My Account/Folder X/etc... 

Ich habe versucht, diese Struktur mit verschiedenen Mail-Readern wie KMail und Balsa zu importieren, aber jeder Import schlug fehl. Ich möchte nur, dass all diese Mails leicht zugänglich und lesbar sind.

Mit welchem ​​Tool kann ich unter Linux eine solche Struktur importieren?

1

1 Antwort auf die Frage

2
grawity

Da es sich um eine Datei pro Nachricht handelt, die nur die ursprünglichen Daten im RFC 822-Format enthält, ist es einfach, das Maildir ++ - Layout zu konvertieren, indem Sie die Dateien einfach umbenennen. Danach sollte es für mindestens Balsa und Mutt sowie für die meisten IMAP-Server lesbar sein (wenn Sie Dateien direkt hochladen können).

#!/usr/bin/env bash  inputroot=~/.claws-mail/imapcache  output=~/claws.maildir  find "$inputroot/" -mindepth 2 -type d | while read -r srcdir; do # Maildir++ uses <dir>/.a.b.c/ for subfolder hierarchy; # the "INBOX" itself is just <dir>/, having <dir>//, but it # is not used during this conversion, which puts all mail in subfolders. folder=$ folder=/$ folder=$ folder=$ dstdir=$output/$folder find "$srcdir" -maxdepth 1 -type f -not -name '.*' | while read -r srcfile; do if [ ! -d "$dstdir/cur" ]; then echo "creating: $dstdir" mkdir -p "$dstdir/cur" "$dstdir/new" "$dstdir/tmp" fi # in cur/, filenames are <unique>:2,<flags> (S for "seen") dstname="claws.$.$(stat -c %Y "$srcfile"):2,S" cp -a "$srcfile" "$dstdir/cur/$dstname" done done