Apple Mail, de standaardmailer op Macintosh-computers, kan berichten importeren uit een groot aantal andere mailers, maar daarbij blijft de status van berichten niet bewaard: ongeacht of een bericht al gelezen, beantwoord of doorgestuurd is, Mail importeert alles als „nieuw en ongelezen.” Dit maakt overstappen op Mail een beetje ongelukkig voor wie die informatie wilt behouden zoals in de oude mailer — Mail Flags lost dit probleem op: het zoekt uit wat de status van geïmporteerde berichten was en zet die weer terug in Mail.
Wanneer Mail Flags start, zal het eerst controleren of Apple Mail gestart is; zo niet, dan wordt u gevraagd of u Mail wilt starten of Mail Flags wilt stoppen.
De reden hiervoor is dat Mail gestart moet zijn zodat Mail Flags een lijst van uw postbussen samen kan stellen, maar het is mogelijk dat u op dat moment niet wilt dat Mail start — bijvoorbeeld omdat u uw nieuwe berichten op wilt halen in een andere mailer, maar het starten van Mail kan ervoor zorgen dat u deze berichten niet meer kunt ophalen in uw andere mailer.
Hoewel er waarschijnlijk geen problemen op zullen treden, is het aan te raden dat u Mail niet gebruikt terwijl Mail Flags aan het werk is — werk niet met de postbussen die u converteert als u Mail gedurende deze tijd toch nodig hebt. Kopieer of verplaats er geen berichten naartoe, verwijder er geen berichten uit, markeer geen berichten en lees er liefst ook geen in die postbus(sen).
Indien u regels ingesteld hebt om nieuwe berichten automatisch te sorteren naar de postbussen die u wilt converteren, kunt u het beste Mail zo instellen dat het niet automatisch berichten downloadt tijdens het conversieproces. Om dit te doen gaat u naar de voorkeuren van Mail en klikt u op het tabblad Algemeen linksbovenin het venster. In de algemene voorkeuren zet u Zoek naar nieuwe berichten op Handmatig — op deze manier zoekt Mail alleen naar nieuwe berichten wanneer u op Haal op klikt. Wanneer u klaar bent met Mail Flags kunt u Zoek naar nieuwe berichten weer op de originele instelling terugzetten.
Dit zijn vooral voorzorgsmaatregelen — het is beter om te zorgen dat er niets misgaat dan met de gebakken peren te zitten, toch?
Wanneer Mail Flags start verschijnt er in het venster ervan een lijst met alle postbussen die u in Mail heeft, met daarbij het totale aantal berichten en het aantal ongelezen berichten in elk daarvan. De aantallen berichten zijn puur ter informatie, maar kunnen helpen de juiste postbus te vinden en een idee te geven van de benodigde tijd voor de conversie.
In de lijst selecteert u de postbus(sen) waarvan u de berichtstatussen wilt corrigeren, door met de muis op de naam van de postbus te klikken. U kunt meer dan één postbus selecteren door de ⌘-toets op uw toetsenbord ingedrukt te houden terwijl u klikt, en kunt op dezelfde manier een postbus ontselecteren.
Klik daarna op de knop Pas status aan… of druk ⇧⌘S in op uw toetsenbord. Wanneer u dit doet zal Mail Flags alle berichten in de geselecteerde postbussen nalopen corrigeren of ze gelezen, beantwoord, doorgestuurd en/of gemarkeerd zijn. De voortgangsindicator onderin het venster geeft aan hoever de conversie gevorderd is; u kunt ook in Mail kijken, waar u de status van berichten kunt volgen door in de postbus te kijken.
Zodra Mail Flags de status van een bericht aangepast heeft kunt u deze niet herstellen! U kunt natuurlijk met de hand berichten markeren in Mail (selecteer hiervoor één of meer berichten en klik erop met de rechtermuisknop waardoor een menu opent, waarin u dan naar Markeer als gaat) maar het is niet mogelijk om de originele status die de berichten in Mail hadden, automatisch terug te krijgen. Wanneer dat echt nodig is, zult u waarschijnlijk een Time Machine (of andere) backup van de map ~/Bibliotheek/
Na de conversie wordt de lijst met postbussen bijgewerkt. U kunt dit ook handmatig doen door op de knop Haal postbussen op te klikken — dit kan van pas komen wanneer u een postbus maakt, verwijderd of hernoemt terwijl Mail Flags gestart is, of als de inhoud van een postbus verandert.
De conversie kan een behoorlijke tijd in beslag nemen: op de 2,4-GHZ Core 2 Duo iMac uit begin 2008 van de schrijver duurt het ongeveer een minuut om de statussen van 100 berichten te corrigeren, oftewel wat minder dan twee berichten per seconde. Als u duizenden berichten wilt corrigeren is het misschien een goed idee Mail Flags dit te laten doen terwijl u andere bezigheden heeft. (De reden voor dit gebrek aan snelheid wordt verderop uitgelegd.)
Hoewel Mail Flags er niet sneller door zal werken, is één manier om het corrigeren van grote postbussen handzamer te maken, het aanmaken van een tijdelijke postbus waarin u maar een deel van de te corrigeren berichten zet. U kunt dan de status van alleen deze berichten corrigeren, waarna u ze terug kunt verplaatsen naar de postbus waar ze origineel in stonden.
Misschien overbodig om te vermelden, maar doe dit met maar één postbus tegelijk om te voorkomen dat u vergeet uit welke postbus een bericht ook alweer kwam.
Mail Flags is hoofdzakelijk bedoeld om berichten te corrigeren die origineel uit postbussen in mbox-formaat komen. Dit is een de facto-standaard onder Unix en komt ook geregeld voor op andere besturingssystemen vanwege het eenvoudige bastandsformaat van de postbussen.
Enkele van de bekendere mailers die het mbox-formaat gebruiken zijn de volgende:
Met andere woorden: indien u berichten uit één van deze mailers in Mail geïmporteerd hebt, kunt u waarschijnlijk Mail Flags gebruiken om de originele berichtstatussen terug te krijgen. Er is een kans dat het ook met andere mailers werkt, maar succes is niet gegarandeerd.
Er is echter weinig te verliezen, afgezien van tijd, door het toch te proberen: als Mail Flags niets vindt dat het herkent, zal het ook niets aan een bericht veranderen.
Omdat ik hondered megabytes aan oude berichten heb die ik van midden jaren '90 tot en met de vroege jaren 2010 gedownload heb met mailers als PC Eudora, Pegasus Mail for Windows, KMail en Mozilla Thunderbird. Ik wilde al jaren overschakelen op Apple Mail maar heb nooit een manier kunnen vinden om m'n oude berichten te importeren zonder dat ze allemaal als ongelezen verschenen. Het is natuurlijk makkelijk genoeg om alle postbussen te selecteren, er met rechts op te klikken en dan Markeer alle berichten als gelezen te kiezen, maar dat zou betekenen dat alle metadata toch nog verloren ging — terwijl ik graag wil kunnen zien dat ik op een bericht geantwoord heb, ook al was dat tien jaar geleden.
In 2007 heb ik een Python-script geschreven om de postbusbestanden van Thunderbird om te zetten in de losse berichtbestanden van Mail, waarbij de benodigde flags aangezet werden om de berichtstatus te behouden, maar dat werkte niet helemaal zoals verwacht. Dat wil zeggen: de berichten werden zonder problemen geconverteerd, maar Mail heeft de vreemde gewoonte om de status zoals die in het berichtbestand staat, schijnbaar totaal te negeren — het maakt niet uit op wat je de status zet in het bestand, wanneer je in Mail zelf naar het bericht gaat wordt het als ongelezen aangegeven … Waarschijnlijk wordt een database gebruikt om de status bij te houden, maar zelfs de postbus opnieuw opbouwen of het bestand ~/Bibliotheek/
De volgende paar jaar ben ik Thunderbird daarom maar blijven gebruiken, ondanks de middelmatige integratie ervan met OS X en dat het aanvoelt als een Windows-programma (dat laatste deels vanwege de Nederlandse vertaling, die Windows-/Linux-termen gebruikt in plaats van Mac-termen). Toen had ik ineens een heldere ingeving: ik realiseerde me dat Mail alle kopregels van geïmporteerde berichten bewaart — inclusief de regel met de berichtstatus in Thunderbird! Met andere woorden: in plaats van de status rechtstreeks proberen in te stellen op een manier die Mail zou accepteren, kon ik Mail zelf die status aan laten passen. Daarna was het alleen nog een kwestie van een beetje AppleScript schrijven. O, en van worstelen met de code en frequent vloeken omdat Apple het oude AppleScript Studio vervangen heeft door een AppleScript-Objective C-brug. Nu moet je dus eerst de manier van doen van Objective C doorkrijgen wanneer je ook maar een eenvoudig programma met vensters wilt schrijven in AppleScript … terwijl de belangrijkste reden voor mij om AppleScript te gebruiken voor dit spoort programma's, is omdat ik moeite heb met het doorkrijgen van de manier van doen van Objective C :(
De statuscorrectie werkt eigenlijk heel eenvoudig: Mail bewaart alle originele kopregels van geïmporteerde berichten maar negeert ze bijna allemaal afgezien van regsl als To
, From
, Subject
en Date
. Omdat elke mailer (en mail transport agent) kopregels aan een bericht toe kan voegen, gebruiken veel van zulke programma's ze om gegevens over het bericht in bij te houden; Mail Flags vraagt aan Mail om bepaalde kopregels uit elk bericht dat gecorrigeert moet worden en haalt er dan de benodigde informatie uit. Wanneer dat gedaan is, geeft het opdracht aan Mail om de bijbehorende status in te stellen voor het bericht.
Nadat op de knop Pas status aan… geklikt is, vraagt Mail Flags de kopregels op van elk bericht in elke geselecteerde postbus. Wanneer het de kopregels voor een bericht heeft, zoekt het door die regels voor de volgende regelnamen:
Status
X-Status
X-Mozilla-Status
De Status
- en X-Status
-regels hebben een waarde die bestaat uit één of meer (hoofd)letters die aangeven of het bericht gelezen of beantwoord is, of het een oud bericht is, enz. Documentatie over de gebruikte letters is moeilijk aan te komen omdat het erop lijkt dat er geen echte standaard voor is maar alleen letters die uit gewoonte gebruikt worden; daarom is de uitleg van de letters die door Mail gebruikt wordt, gebaseerd op de documentatie voor de mailbox.mboxMessage-class in Python.
Als er een Status
- of X-Status
-regel gevonden wordt, kijkt Mail Flags of de volgende letters aanwezig zijn:
Letter | Bericht is … |
---|---|
A | Beantwoord (Answered) |
F | Gemarkeerd (Flagged) |
R | Gelezen (Read) |
Als er andere letters aanwezig zijn worden deze genegeerd omdat ze niet relevant zijn voor de berichtstatus in Mail.
Een X-Mozilla-Status
-kopregel bevat een hexadecimaal getal van vier cijfers (maar zonder aanwijzingen dat het hexadecimaal is, zoals bijvoorbeeld te beginnen met „0x”) dat redelijk veel over de berichtstatus aangeeft, zoals uitgelegd wordt in de documentatie van Mozilla zelf. Dit getal wordt bepaald door bits aan te zetten voor verschillende flags, waarvan de belangrijke voor Mail Flags zijn:
Bit Nr. | Bericht is … |
---|---|
0 | Gelezen |
1 | Beantwoord |
2 | Gemarkeerd |
12 | Doorgestuurd |
Wanneer de headers voor een bericht nagelopen zijn geeft Mail Flags aan Mail de opdracht om het bericht te markeren volgens de gevonden statussen, maar alle andere blijven zoals ze waren. Bijvoorbeeld: als een geïmporteerd bericht in de Status
en/of X-Status
de letters R
en F
heeft staan, maar er is na het importeren niet op geantwoord, zal het nu weergegeven worden als gelezen en gemarkeerd met een vlaggetje in de berichtenlijst in Mail. Als er al wel op dit bericht geantwoord was in Mail (maar niet in de mailer waarmee het bericht origineel ontvangen is) zou het in Mail als beantwoord gemarkeerd blijven, ook al is het bericht volgens de Status
en X-Status
niet beantwoord.
Wanneer statussen elkaar tegenspreken is de laatste die tegengekomen wordt, de status die ook gebruikt wordt. Let wel op dat een status die niet specifiek aan- of uitstaat, een status in een andere kopregel niet tegenspreekt. Een voorbeeld hiervan is met de Status
- en X-Status
-regels, die geen manier hebben om aan te geven dat een status uit staat — alleen dat hij aan staat (dat hij uitstaat volgt uit dat de bijbehorende letter niet aanwezig is, maar Mail Flags negeert statussen die niet aanwezig zijn zodat de originele status van het bericht in Mail bewaard blijft).
Neem bijvoorbeeld een bericht met de volgende kopregels:
X-Status: A
X-Mozilla-Status: 0001
Hierbij geeft de X-Status
-regel aan dat het bericht beantwoord is terwijl de X-Mozilla-Status
-regel zegt dat het wel gelezen maar niet beantwoord is (dit kan bijvoorbeeld voorkomen bij een bericht dat in Thunderbird geïmporteerd is uit een andere mailer). Als in dit geval X-Status
eerst gevonden wordt, zal het bericht uiteindelijk gemarkeerd worden als gelezen maar niet beantwoord, omdat de X-Mozilla-Status
-status specifiek het eerdere X-Status
-resultaat wijzigt.
Als echter eerst de X-Mozilla-Status
-regel gevonden wordt, dan zal het bericht wel als gelezen en beantwoord worden gemarkeerd: X-Mozilla-Status
markeert het eerst als alleen gelezen, waarna X-Status
het als beantwoordt markeert maar de status „gelezen” niet uitzet omdat de X-Status
-regel geen indicatie geeft of het bericht wel of niet gelezen is (dat staat meestal in een Status
-regel).
Toegegeven moet worden dat Mail Flags nogal langzaam is. De precieze snelheid zal afhangen van uw computer, maar het programma zal waarschijnlijk nooit als snel ervaren worden. De reden hiervoor is redelijk eenvoudig en daarom moeilijk te veranderen: Mail Flags gebruikt AppleScript om informatie over berichten van Mail te krijgen en om Mail de berichten te laten markeren. AppleScript vervult deze taken goed maar is nooit echt snel geweest, en dat is in dit programma goed te zien.
Mail Flags: an application to set status flags for imported e-mail messages in Apple Mail
Copyright © 2011 Jakko Westerbeke <jakko@xs4all.nl>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Copyright © 2011 Jakko Westerbeke <jakko@xs4all.nl>
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be read at <http://www.gnu.org/licenses/fdl.html>.
De maker is niet verantwoordelijk voor schade, dataverlies of wat dan ook, veroorzaakt door het gebruik van Mail Flags.