Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mailboxen löschen - aber wie
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 08.12.2006 - 10:47    Titel: Mailboxen löschen - aber wie Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 09.12.2006 - 11:43    Titel: Antworten mit Zitat

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 Sad 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 Sad

Daisy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 09.12.2006 - 12:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 11.12.2006 - 10:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 11.12.2006 - 11:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
hweber
•--->
•--->


Anmeldedatum: 01.02.2004
Beiträge: 397

BeitragVerfasst am: 11.12.2006 - 13:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hweber
•--->
•--->


Anmeldedatum: 01.02.2004
Beiträge: 397

BeitragVerfasst am: 11.12.2006 - 14:19    Titel: Antworten mit Zitat

ich weiß zwar nicht, wie die den button "choose" aktiv bekommen haben, aber muß ja irgendwie gehen

http://www.cit.cornell.edu/helpdesk/mac/email/osxmailapp.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 11.12.2006 - 14:57    Titel: Antworten mit Zitat

Auch wieder unschön Wink 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 Sad
_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 11.12.2006 - 15:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 11.12.2006 - 16:36    Titel: Antworten mit Zitat

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 ... Wink

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
Benutzer-Profile anzeigen Private Nachricht senden
hweber
•--->
•--->


Anmeldedatum: 01.02.2004
Beiträge: 397

BeitragVerfasst am: 11.12.2006 - 18:47    Titel: Antworten mit Zitat

- 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 12.12.2006 - 00:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 12.12.2006 - 00:45    Titel: Antworten mit Zitat

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 ... Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 12.12.2006 - 01:10    Titel: Antworten mit Zitat

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 ... Wink


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
Benutzer-Profile anzeigen Private Nachricht senden
Daisy
•-->
•-->


Anmeldedatum: 26.04.2002
Beiträge: 79

BeitragVerfasst am: 12.12.2006 - 14:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter