[Python-de] Datum aus Mails parsen

Florian Lindner mailinglists at xgm.de
Di Mär 22 15:59:47 EDT 2016


Hallo,

ich will das Datum einer Mail rausfinden, ob es das Sende- oder Empfangsdatum 
ist, oder eins der Stationen in der Mitte ist egal.

Nun habe ich mir mal eine beliebige Mail rausgegriffen:

From someone at gmail.com Fri Feb 05 09:09:11 2016
Received: from ipvsmail.informatik.uni-stuttgart.de
        by hermes.informatik.uni-stuttgart.de (Dovecot) with LMTP id 
842rLx9mtFbVeAAAqVsIVA
        for <user at ipvs.uni-stuttgart.de>; Fri, 05 Feb 2016 10:09:12 +0100
Received: from mx3.informatik.uni-stuttgart.de (mailgw.informatik.uni-
stuttgart.de [129.69.211.42])
        by ipvsmail.informatik.uni-stuttgart.de (Postfix) with ESMTP id 
D3111EA3
        for <somereceiver at ipvsmail.informatik.uni-stuttgart.de>; Fri,  5 Feb 
2016 10:09:12 +0100 (CET)
Received: by mx3.informatik.uni-stuttgart.de (Postfix, from userid 65534)
        id BD6DB6251; Fri,  5 Feb 2016 10:09:12 +0100 (CET)
Received: from mail-lf0-f52.google.com (mail-lf0-f52.google.com 
[209.85.215.52])
        (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
        (No client certificate requested)
        by mx3.informatik.uni-stuttgart.de (Postfix) with ESMTPS id E6D546249
        for <somereceiver at ipvs.uni-stuttgart.de>; Fri,  5 Feb 2016 10:09:11 
+0100 (CET)
Received: by mail-lf0-f52.google.com with SMTP id 78so52976351lfy.3
        for <somereceiver at ipvs.uni-stuttgart.de>; Fri, 05 Feb 2016 01:09:11 
-0800 (PST)
X-Received: by 10.25.42.18 with SMTP id q18mr5524069lfq.151.1454663351309;
 Fri, 05 Feb 2016 01:09:11 -0800 (PST)
Received: by 10.25.145.21 with HTTP; Fri, 5 Feb 2016 01:09:11 -0800 (PST)
Received: by 10.25.145.21 with HTTP; Fri, 5 Feb 2016 01:09:11 -0800 (PST)
Date: Fri, 5 Feb 2016 10:09:11 +0100

Ein wenig habe ich schon irrelevante Infos rausgenommen.

Probleme die ich sehe ist a) die Zuverlässigkeit des Datums und b) die 
Standardisierung des Formates.

Der Date Header springt natürlich sofort ins Auge, aber ich denke nicht, dass 
der sonderlich zuverlässig ist. Regelmäßig bekomme ich Spam mit unbekannten 
Datum oder Datum in der Zukunft. Außerdem habe ich bei ersten Testläufen auch 
verschiedene Formate gesehen (z.B. die Zeit ohne Sekunden)

Nun frage ich mich, was da am zuverlässigsten ist? Die erste Zeile From gibt 
es offensichtlich auch nicht bei allen Mails.

Sollte man einfach den ersten Received Header nehmen, am ";" trennen und dann 
datetime.strptime mit einen entsprechenden Format String drauf los lassen?

Was denkt Ihr, ist das Beste?

Viele Grüße,
Florian


Mehr Informationen über die Mailingliste python-de