Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 08.12.2006 - 10:47 Titel: Mailboxen löschen - aber wie |
|
|
Ich habe eine Mailboxhierarchie. D.h. also eine Mailbox die genau eine weitere Mailbox enthält. Diese beiden möchte ich nun löschen. Aber wie. Folgendes Beispiel Script erzeugt eine dreistufige Hierarchie als Beispiel und versucht sie anschließend zu löschen. Das klappt auch mit der untersten Box. Die übergeordneten bleiben aber erhalten und es gibt einen Fehler.
Kann mir jemand helfen?
tell application "Mail"
set mboxName to "aaa/bbb/ccc"
make new mailbox with properties {name:mboxName}
set mb to mailbox named mboxName
repeat while (count of mailboxes of mb) < 1
set p to container of mb
delete mb
set mb to p
end repeat
end tell
_________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Daisy •-->

Anmeldedatum: 26.04.2002 Beiträge: 79
|
Verfasst am: 09.12.2006 - 11:43 Titel: |
|
|
Moin Skeeve,
eine Lösung habe ich leider nicht, aber ich kann ein bisschen was zum Hintergrund des Problems sagen.
Wenn du die Mailbox "aaa/bbb/ccc" erstellst, dann wird nur der Ordner "ccc" tatsächlich erzeugt, die beiden anderen übergeordneten Boxen sind nur 'Geister'. Das kann man daran erkennen, dass sie nicht wie 'ccc' blau sind, sondern weiss - und du auch keine Mails reinlegen kannst.
Den Effekt kann man auch manuell herstellen: Lege eine Mailbox nebst Unterbox an und lösche dann die erste - die ist dann nicht weg, sondern nur nicht mehr blau. (Es handelt sich bei den Geisterboxen übrigens um ein Feature von Mail - aber keine Ahnung, wofür die gut sind ...)
Jetzt hätte ich angenommen, dass der Logik folgend das funktioniert:
Du löschst 'ccc' und erzeugst dann 'aaa/bbb' (soweit geht's noch - 'aaa/bbb' wird dann auch wie erwartet blau) - aber wenn ich dann versuche, 'aaa/bbb' zu löschen, dann wird sie leider wieder nur weiss und verschwindet nicht Irgendwie muss da noch eine Information drinstecken, so dass Mail annimmt, dass diese Box nicht leer ist - oder es ist einfach ein Bug - auf jeden Fall erscheint es mir unlogisch ... wie so vieles in Mail
Daisy |
|
Nach oben |
|
 |
Daisy •-->

Anmeldedatum: 26.04.2002 Beiträge: 79
|
Verfasst am: 09.12.2006 - 12:56 Titel: |
|
|
Juhu - nochmal ich ... mir ist eine Lösung eingefallen:
nachdem du 'ccc' gelöscht hast erstellst du nicht eine neue 'aaa/bbb'-Box sondern benennst einfach den bestehenden Ordner um:
do shell script "mv ~/Library/Mail/Mailboxes/aaa/bbb ~/Library/Mail/Mailboxes/aaa/bbb.mbox"
Das ist nämlich der einzige Unterschied in der Ordnerstruktur: 'richtige' Mailbox-Folder enden auf '.mbox' - die Geist-Boxen haben keine Endung.
Damit wird sie dann zu einer 'richtigen' Mailbox (wird aber im laufenden Programm nicht angezeigt) und kann dann ganz normal gelöscht werden:
tell app "Mail" to delete mailbox "aaa/bbb"
Mit 'aaa' verfährst du genauso.
Viel Spaß beim Basteln ...
Grüße,
Daisy
Edit: Hmm - ich habe dein Post auf macscripter.net gelesen und mich daraufhin nochmal mit dem Thema beschäftigt ... ich habe mir eingebildet, dass das bei meinem Test heute mittag so wie oben beschrieben funktioniert hat - aber jetzt bekomme ich es nicht mehr so hin. Also haben ich was Neues gebastelt - so geht's jetzt aber (vielleicht kann man es noch etwas vereinfachen ...):
Code: | tell application "Mail"
set mboxName to "aaa/bbb/ccc/ddd/eee"
make new mailbox with properties {name:mboxName}
end tell
tell application "Mail"
set mb to mailbox named mboxName
try
repeat while (count of mailboxes of mb) < 1
set theContainer to container of mb
set theContainerPath to my containerPath(mb) & "/" & name of mb
try
delete mb
on error
do shell script "rmdir ~/Library/Mail/Mailboxes/" & theContainerPath
make new mailbox with properties {name:theContainerPath}
delete mb
end try
set mb to theContainer
end repeat
end try
end tell
on containerPath(mb)
tell application "Mail"
set retVal to ""
repeat
try
set retVal to (name of container of mb) & "/" & retVal
set mb to container of mb
on error
try
return text 1 thru -2 of retVal
on error
return ""
end try
end try
end repeat
end tell
end containerPath |
|
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 11.12.2006 - 10:43 Titel: |
|
|
Ich habe es mir schon fast gedacht, daß ich auf die shell ausweichen muß. Das einzig Unschöne daran, was mich ziemlich stört ist, daß fest eingebaute ~/Library/Mail/Mailboxes/! Es muß doch eine Möglichkeit geben, Mail dazu zu bewegen, diesen Pfad herauszurücken. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Daisy •-->

Anmeldedatum: 26.04.2002 Beiträge: 79
|
Verfasst am: 11.12.2006 - 11:40 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | Ich habe es mir schon fast gedacht, daß ich auf die shell ausweichen muß. Das einzig Unschöne daran, was mich ziemlich stört ist, daß fest eingebaute ~/Library/Mail/Mailboxes/! Es muß doch eine Möglichkeit geben, Mail dazu zu bewegen, diesen Pfad herauszurücken. |
jo, da hast' natürlich recht. Die Mailboxen sollten zwar eigentlich immer da liegen - aber wer weiss ... Ich denke, so könnte das gehen:
Code: | set {od, text item delimiters} to {text item delimiters, "\""}
set mailboxPath to (text item 2 of (do shell script "defaults read com.apple.mail | grep -e'AccountPath.*Mailboxes\";'"))
set text item delimiters to od |
|
|
Nach oben |
|
 |
hweber •--->

Anmeldedatum: 01.02.2004 Beiträge: 397
|
Verfasst am: 11.12.2006 - 13:59 Titel: |
|
|
dies kennst Du sicher:
Code: |
tell application "Mail"
get account directory of account 1
end tell
|
sorry, ich habe natürlich keine lust, einen meiner accounts zu verschieben, um zu sehen, was dann ausgegeben wird |
|
Nach oben |
|
 |
hweber •--->

Anmeldedatum: 01.02.2004 Beiträge: 397
|
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 11.12.2006 - 14:57 Titel: |
|
|
Auch wieder unschön Da muß man ein weiteres externes Programm aufrufen und sich dann noch drauf verlassen, daß das Ausgabeformat sich nicht ändert.
Ich dachte eher an soetwas:
tell application "Mail"
set dirs to {}
repeat with acc in accounts
copy account directory of acc to the end of dirs
end repeat
dirs
end tell
Das funktioniert aber dummerweise nicht für "Lokal"-e Accounts  _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 11.12.2006 - 15:01 Titel: |
|
|
hweber hat Folgendes geschrieben: | dies kennst Du sicher:
Code: |
tell application "Mail"
get account directory of account 1
end tell
|
|
Das klappt nicht für die accounts, bei denen in den Properties account:missing value, name:account "Lokal" ... angezeigt wird. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Daisy •-->

Anmeldedatum: 26.04.2002 Beiträge: 79
|
Verfasst am: 11.12.2006 - 16:36 Titel: |
|
|
hmm - also hwebers Beispiel zeigt ja nur, wie man account-Verzeichnisse verschieben kann - dass das geht, war mir auch bekannt. Dass man aber auch die lokalen Mailboxen irgendwo anders hin bekommt? ... Ich könnte mir zwar auch dafür sinnvolle Anwendungen vorstellen, wüsste aber nicht, wie das aus dem Programm heraus gehen sollte. hweber - gib uns Nachhilfe, wenn du's weisst - ich wüsste es auch gerne ...
Ausgehend davon, dass sich die lokalen Mailboxen alle zumindest am gleichen Fleck befinden wäre das Auslesen der User Defaults m.E. ein vertretbares Risiko. Die Wahrscheinlichkeit, dass sich da grundlegend was ändert ist doch nicht so hoch. Vom 'grep'pen her ist folgendes wahrscheinlich noch etwas sicherer, da wir hier zielgerichtet nach dem Pfad zur Outbox suchen (die ja auch eine lokale Mailbox ist):
Zitat: | set {od, text item delimiters} to {text item delimiters, "\""}
set mailboxPath to (text item 2 of (do shell script "defaults read com.apple.mail | grep -e OutboxMailboxPath | sed 's/Outbox.mbox//'"))
set text item delimiters to od |
|
|
Nach oben |
|
 |
hweber •--->

Anmeldedatum: 01.02.2004 Beiträge: 397
|
Verfasst am: 11.12.2006 - 18:47 Titel: |
|
|
- ich weiß mit sicherheit weniger als ihr, ich habe nur ein wenig gegoogelt
- ich habe versucht, beim anlegen eines neuen accounts diesen "choose" knopf zu betätigen - er wurde nicht aktiv
ansonsten habe ich noch das hier in der mail-hilfe gefunden:
Zitat: |
ACHTUNG: Ein Postfach darf im Finder nicht umbenannt, bewegt oder gelöscht werden. Wenn Sie dies dennoch tun, werden die vorgenommenen Änderungen im Programm "Mail" nicht angezeigt. Verwenden Sie immer das Programm "Mail", um ein Postfach umzubenennen, zu bewegen oder zu löschen.
|
- jetzt ist mir klar, warum mein mail-import nicht mehr tut, denn genau das habe ich mal gemacht, den ordner "Importiert" zuerst umbenannt und dann, nachdem ich den import schön verteilt hatte, im finder gelöscht
- er existiert noch irgendwo intern, aber ich kann ihn nicht mehr anzeigen |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 12.12.2006 - 00:26 Titel: |
|
|
Daisy hat Folgendes geschrieben: | Zitat: | set {od, text item delimiters} to {text item delimiters, "\""}
set mailboxPath to (text item 2 of (do shell script "defaults read com.apple.mail | grep -e OutboxMailboxPath | sed 's/Outbox.mbox//'"))
set text item delimiters to od |
|
Das geht auch einfacher:
set mailboxPath to do shell script "dirname `defaults read -app 'Mail' OutboxMailboxPath`"
Gefällt mir aber trotzdem nicht.
Ich habe noch das hier gefunden:
Code: | defaults read -app Mail CurrentTransferMailboxPat |
Allerdings ist das bei mir nicht auf dem aktuellen Stand und wird auch nicht dazu, wenn ich Mail beende. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Daisy •-->

Anmeldedatum: 26.04.2002 Beiträge: 79
|
Verfasst am: 12.12.2006 - 00:45 Titel: |
|
|
Skeeve hat Folgendes geschrieben: |
Das geht auch einfacher:
set mailboxPath to do shell script "dirname `defaults read -app 'Mail' OutboxMailboxPath`" |
ah - ja klar - so ist das wirklich viel besser
Zitat: |
Gefällt mir aber trotzdem nicht.
|
Du bist aber schwer zufriedenzustellen. Ich geb's auf (bleibe aber trotzdem mal bei meiner Position, dass ich die ganze Übung für unnötig halte, da man den Ordner ja nicht verschieben kann - zumindest solange, bis mir jemand das Gegenteil beweist ...  |
|
Nach oben |
|
 |
Skeeve •---->


Anmeldedatum: 20.04.2006 Beiträge: 1068
|
Verfasst am: 12.12.2006 - 01:10 Titel: |
|
|
Daisy hat Folgendes geschrieben: | Zitat: |
Gefällt mir aber trotzdem nicht.
|
Du bist aber schwer zufriedenzustellen. |
Ich meine halt, daß Mail mir sagen können muß, wo es den Folder abgelegt hat.
Außerdem muß es eine Möglichkeit geben, so einen Folder zu löschen.
Daisy hat Folgendes geschrieben: | Ich geb's auf (bleibe aber trotzdem mal bei meiner Position, dass ich die ganze Übung für unnötig halte, da man den Ordner ja nicht verschieben kann - zumindest solange, bis mir jemand das Gegenteil beweist ...  |
Du meinst jetzt, daß es unnötig ist, herauszufinden, wo der liegt? Ansich schon. Das ist alles "Gehuddel". Mail muß da selbst was bieten. Im GUI kann man die Folder schließlich löschen. Warum kann es Applescript nicht? _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
 |
Daisy •-->

Anmeldedatum: 26.04.2002 Beiträge: 79
|
Verfasst am: 12.12.2006 - 14:47 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | Du meinst jetzt, daß es unnötig ist, herauszufinden, wo der liegt? Ansich schon. Das ist alles "Gehuddel". Mail muß da selbst was bieten. Im GUI kann man die Folder schließlich löschen. Warum kann es Applescript nicht? |
Tschuldigung - ich glaube, ich habe mich missverständlich ausgedrückt. Natürlich ist deine Problemstellung (Mailboxen und deren Sub-Boxen zu löschen) nicht unnötig oder gar unsinnig (sonst hätte ich mich damit auch nicht ausenandergesetzt) - ich hatte das 'unnötig' wirklich nur auf die Ermittlung des Pfades zum Mailboxordner bezogen der imho immer am gleichen Platz liegt und den man nach meiner Ansicht - ohne Mail in seiner Funktion nachhaltig zu beeinträchtigen - auch nicht einfach im Finder verschieben kann.
Ich gebe dir übrigens recht - die AppleScript-Unterstützung von Mail ist (und war schon immer) lausig und voller Fehler/Ungereimtheiten ...
Grüße
D. |
|
Nach oben |
|
 |
|