Tengo un largo historial de correos electrónicos de más de 30 años. Algunos de mis viejos correos electrónicos se muestran con la fecha equivocada en mail.app.
Ejemplo:
Estas son las cabeceras después de anonimizar los datos:
Received: from speedy.grolier.fr (speedy.grolier.fr [194.158.97.87]) by ns.calvacom.fr (8.7.3/8.6.9) with ESMTP id OAA21857 for <*@*>; Fri, 6 Sep 1996 14:02:35 +0200 (MET DST)
Received: from *.club-internet.fr (ppp-207-54.neuilly.club-internet.fr [194.117.207.54]) by speedy.grolier.fr (8.7.5/MGC-960516) with ESMTP id OAA16943 for <*@*>; Fri, 6 Sep 1996 14:00:14 +0200 (MET DST)
X-UIDL: 842012897.000
Message-Id: <*@speedy.grolier.fr>
From: "*" <*@*>
To: "*" <*@*>
Subject: Re: Faites-vous connaitre
Date: Fri, 6 Sep 1996 13:56:38 +0200
X-MSMail-Priority: Normal
X-Priority: 3
X-Mailer: Microsoft Internet Mail 4.70.1132
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
below the body of the email.
Así que podemos ver que
Received:
tieneFri, 6 Sep 1996 14:02:35 +0200 (MET DST)
yFri, 6 Sep 1996 14:00:14 +0200 (MET DST)
Date:
tieneFri, 6 Sep 1996 13:56:38 +0200
Así que lo comprobé con mdls
mdls ~/Library/Mail/path_to_email/857941.emlx | grep -i date
kMDItemFSContentChangeDate = 2020-10-02 02:10:10 +0000
kMDItemFSCreationDate = 2015-10-13 04:27:22 +0000
ningún dato útil sobre el propio correo electrónico. Comprobemos con mdimport
mdimport -t -d3 ~/Library/Mail/path_to_email/857941.emlx | grep -i date
"_kMDItemContentChangeDate" = "2020-10-02 02:10:10 +0000";
"_kMDItemCreationDate" = "2015-10-13 04:27:22 +0000";
"_kMDItemExpirationDate" = "<null>";
"com_apple_mail_dateLastViewed" = "2020-10-02 02:10:10 +0000";
"com_apple_mail_dateReceived" = "2005-07-16 15:58:43 +0000";
kMDItemContentCreationDate = "1996-09-06 11:56:38 +0000";
kMDItemContentModificationDate = "2020-10-02 02:10:10 +0000";
kMDItemDateAdded = "2020-10-02 02:10:11 +0000";
kMDItemLastUsedDate = "2020-10-02 02:10:10 +0000";
kMDItemTextContent = " cut the body of email ";
Así que puedo ver que "com_apple_mail_dateReceived" = "2005-07-16 15:58:43 +0000";
es la fecha retenida por mail.app para mostrar la fecha en la UI.
Ahora estoy tratando de entender cómo cambiar eso.
Incluso después de hacer un mdimport -i ~/Library/Mail/path_to_email/857941.emlx
la fecha no cambia en com_apple_mail_dateReceived
.
Estoy probando en este correo, pero tengo miles de correos en el mismo estado con el error com_apple_mail_dateReceived
.
Actualización
Utilizando Catalina, el emlx
ya no sirven porque los correos están ahora en una BD privada. El problema ahora es cómo cambiar los metadatos contenidos en esta BD cuando son erróneos.
Actualización 2
Ok probablemente entendí de donde viene la fecha equivocada. En el archivo emlx:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>conversation-id</key>
<integer>378100</integer>
<key>date-last-viewed</key>
<integer>1601614618</integer>
<key>date-received</key>
<integer>1121529523</integer>
<key>flags</key>
<integer>9160621057</integer>
<key>remote-id</key>
<string>21</string>
</dict>
</plist>
A continuación, intentemos convertir la fecha Epoch en una fecha normal.
% date -r 1121529523
Dim 17 jul 2005 00:58:43 JST
Así que ahora, tenemos que averiguar si cambiamos la fecha del archivo emlx y tratamos de reimportarlo, si se arregla la DB.