Wenn man bei Thunderbird versucht, die Mails geordnet in Ordnern abzulegen, dann passiert das auch: die Mails werden tatsächlich in Ordner kopiert.

Google-Mail macht das nicht so, denn dort entspricht ein Ordner einfach einem Stichwort, das zum Ordnen der Mails herangezogen wird.

Wie es Outlook Mach, weiß man nicht, weil sich der ganze Mailstore in einer einzigen Datei befindet.

Vorteil der Ordnerstruktur ist, dass man sie bei Bedarf auch in einer Datei darstellen kann. Allerdings ist dazu das praktische DOS-Kommando tree nicht geeignet, weil ein Ordner durch zwei Dateien beschrieben wird und nur, wenn er weitere Unterordner enthält auch eine Ordnerstruktur entsteht. Die Speicherung der Ordner und deren Inhalte erfolgt also sowohl in Dateien als auch in Ordnern.

Um alle Ordner einer IMAP-Mailbox dazustellen, kann man das folgende PowerShell-Skript verwenden:

# Thunderbird 
# ===========
# Anzeigen aller IMAP-Ordner
# Das Verzeichnis $dir muss zuerst aus der Konfiguration der Mailbox ermittelt werden
# Thunderbird -> Extras -> Konteneinstellungen -> Lokale Ordner -> Lokaler Ordner

Clear-Host
$dir = "C:\\Users\\\\AppData\\Roaming\\Thunderbird\\Profiles\\c7e6lqi6.default-release\\Mail\\Local Folders\\INBOX.sbd"
$dir = "C:\\Users\\\\AppData\\Roaming\\Thunderbird\\Profiles\\c7e6lqi6.default-release\\ImapMail\\i4.ccc.at"
$count_dir = 0
$count_folder = 0
$indent = "  "

function GetIndent
{
    $level = $args[0]
    $s = "";
    for ($i=0; $i -lt $level; $i++) {
        $s += $indent
    }
    return $s
}
function Thunderbird_Read_Folder
{
	$files = $args[0]+""
	$level = $args[1]*1
	$count = $args[2]*1
	foreach ($file in Get-ChildItem -Force $files) 
	{
		if ($file.Mode -like "d*") # directory
		{
		}
		else # file
		{
			# .msf Mail summary file
			if ($file.Extension -eq ".msf")
			{
                $s = ""
                $global:count_folder++
                if ($count_folder -lt 10) {
                    $s = "0";
                }
                $s = ($global:count_folder).ToString().PadLeft(3,\'0\')
                $s += " " + $level.ToString() +": "
                $s += GetIndent $level
                $s += $file.Name.Replace(".msf","")
				Write-Host $s
				$global:count_dir++
				$path = $file.FullName.Replace(".msf",".sbd")
				if (Test-Path($path)) 
				{
					$level = $level+1
					Thunderbird_Read_Folder $path $level
                                        $level--
				}
			}
		}
	}
}

Thunderbird_Read_Folder $dir 0

$Text = "Finished reading Mailstore in "+$count_dir+" directories"
Write-Host $Text

Zur Werkzeugleiste springen