Page 1 sur 2
[R] _INetSmtpMail : erreur de date
Posté : lun. 30 juin 2014 09:32
par aulus
Bonjour,
Les destinataires de mails expédiés par mes soins par la fonction _INetSmtpMail d'AutoIt me signalent que ces mails affichent des dates erronées à la réception. Année et jour sont bons, mais le mois ne correspond pas. Ainsi 30/06/2014 devient 30/03/2014
Quelle pourrait être l'origine d'un tel dysfonctionnement ? Il ne s'agit pas du serveur car mes envois par la voie normale (via mon logiciel de messagerie) sont correctement datés.
Je vous remercie de votre avis.
Re: [..] _INetSmtpMail : erreur de date
Posté : mar. 01 juil. 2014 08:39
par fred39
Bonjour,
à tout hasard
peut être une piste:
http://www.autoitscript.com/forum/topic ... d-rfc0822/
dans inet.au3, je trouve
Code : Tout sélectionner
"Date: " & _DateDayOfWeek(@WDAY, 1) & ", " & @MDAY & " " & _DateToMonth(@MON, 1) & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $bias & @CRLF & _
à la ligne 145 au lieu de 175.
Re: [..] _INetSmtpMail : erreur de date
Posté : mar. 01 juil. 2014 17:49
par aulus
Merci pour votre aide.
Je vais multiplier mes test d'envois en masse en tenant compte de votre suggestion.
A suivre...
Merci encore.
Re: [R] _INetSmtpMail : erreur de date
Posté : mar. 01 juil. 2014 20:01
par aulus
Les tests suivants n'ont malheureusement pas été concluants.
La ligne 145 du fichier INet.au3 :
Code : Tout sélectionner
"Date: " & _DateDayOfWeek(@WDAY, 1) & ", " & @MDAY & " " & _DateToMonth(@MON, 1) & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $bias & @CRLF & _
modifiée en :
Code : Tout sélectionner
"Date: " & _DateDayOfWeek(@WDAY, 1) & ", " & @MDAY & " " & stringleft(_DateToMonth(@MON, 1),3) & " 20" & stringright(@YEAR, 2) & " " & @HOUR & ":" & @MIN & ":" & @SEC & $bias & @CRLF & _
... ne résout pas le problème.
La date d'aujourd'hui (01
07 2014) s'affiche 01
03 2014 dans le logiciel de messagerie du destinataire.
J'ai tenté de forcer le mois de juillet des deux manières suivantes :
Code : Tout sélectionner
Local [color=#FF0000]$Mois = 07[/color]
"Date: " & _DateDayOfWeek(@WDAY, 1) & ", " & @MDAY & " " &[color=#FF0000] $Mois[/color] & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $bias & @CRLF & _
... ainsi que :
Code : Tout sélectionner
Local [color=#FF0000]$Mois =@MON[/color]
"Date: " & _DateDayOfWeek(@WDAY, 1) & ", " & @MDAY & " " &[color=#FF0000] $Mois[/color] & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $bias & @CRLF & _
... rien n'y fait. Mais pourquoi donc O3 s'affiche-t-il à la place de O7 ?
Re: [..] _INetSmtpMail : erreur de date
Posté : mar. 01 juil. 2014 22:10
par fred39
Bonsoir,
je me demande si on ne fait pas fausse piste:
Il semble que la date des messages reçu est celle de l'entête du mail champ X-ME-Date: ou Date qui est définie par le serveur SMTP.
Il faudrait récupérer un mail et regarder le code source
Si le serveur SMTP est un serveur à vous, je pense que vous avez déjà contrôlé sa date.
J'ai déjà vu sur des serveurs ayant un uptime supérieur à un mois, des pb de date.
http://autoitscript.fr/forum/viewtopic.php?f=3&t=1107
Bonne soirée
Re: [..] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 10:22
par aulus
Bonjour,
J'ai comparé le code source d'un courriel envoyé par _INetSmtpMail (1) avec le code source d'un courriel envoyé par un logiciel de messagerie. (2)
Je note que tout au long du code (2) la référence à la date est toujours : Wed, 02
Jul 2014 09:26:22 +0200
Code : Tout sélectionner
Received: from ...
Wed, 02 Jul 2014 08:49:53 +0200
...
Date: Wed, 2 [color=#FF0000]Jul[/color] 2014 08:49:53 +0200 (CEST)
Tandis que le code (1) affiche :
Code : Tout sélectionner
Received: from ...
Wed, 2 Jul 2014 09:26:21 +0200 (CEST)
...
Date: [color=#FF0000]Mer[/color], 02 [color=#FF0000]Jull[/color] 2014 09:26:21 (+0100)
Le problème proviendrait-il de cette francisation de la date ? Cette francisation est-elle opérée par la fonction _INetSmtpMail ?
Re: [..] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 15:24
par orax
Je ne sais pas d'où sortent
Mer et
Jull mais ce n'est pas bon. Ça doit être Wed et Jul.
Depuis la RFC :
Code : Tout sélectionner
day-name = "Mon" / "Tue" / "Wed" / "Thu" /
"Fri" / "Sat" / "Sun"
Code : Tout sélectionner
month = "Jan" / "Feb" / "Mar" / "Apr" /
"May" / "Jun" / "Jul" / "Aug" /
"Sep" / "Oct" / "Nov" / "Dec"
En tout cas, cette date est juste la date de fin de création du message. Et elle peut être totalement erronée si l'utilisateur qui envoie le message n'a pas son horloge à la bonne heure/date.
C'est pourquoi je préfère trier mes messages reçus par date de réception au lieu de leur date de création.
http://abcdrfc.free.fr/rfc-vf/pdf/rfc5322.pdf a écrit :3.6.1
La date de création spécifie la date et l'heure à laquelle le créateur du message indique que le message a été terminé et est
prêt à passer dans le système de livraison des messages. Par exemple, cela peut être l'heure à laquelle l'utilisateur a appuyé
sur le bouton "envoi" ou "soumettre" dans un programme d’application. Dans tous les cas, il n'est précisément pas envisagé
de lui faire porter l’heure à laquelle le message a réellement été transporté, mais plutôt l'heure à laquelle l'homme ou tout
autre créateur du message l'a mis en forme finale, prêt pour le transport. (Par exemple, un utilisateur d’ordinateur portable
non connecté à un réseau peut mettre le message en file d'attente en vue de sa livraison. La date de création est destinée à
contenir la date et l'heure à laquelle le message a été mis en file d'attente,
pas l'heure à laquelle l'utilisateur s'est connecté au
réseau pour l’envoi du message.)
https://tools.ietf.org/html/rfc5322#section-3.3
http://abcdrfc.free.fr/rfc-vf/pdf/rfc5322.pdf
Re: [..] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 15:44
par aulus
orax a écrit :Je ne sais pas d'où sortent Mer et Jull...
Moi non plus !
Après lecture de votre message, j'ai purement et simplement supprimé la ligne 145 du fichier Inet.au3.
Dans mes premiers tests, les
Mer et
Jull ont disparu pour laisser la place aux
Wed et
Jul , et les dates affichées dans les clients de messagerie des destinataires sont correctes.
Je ne comprends pas tout, mais la correction a l'air efficace.
Je mets le fil en résolu, en espérant ne pas revenir aux [..] dans les heures ou jours qui viennent !
Merci Orax de votre éclairage...
Re: [R] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 16:05
par jchd
Quelle version d'AutoIt emploies-tu ? Une version d'origine (US donc) ou une version locale ?
Re: [R] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 16:17
par aulus
Bonjour jchd,
J'utilise la version v3.3.10.2
Re: [R] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 18:47
par orax
Mais est-ce que c'est celle du pack FR ? Puisque je viens d'essayer avec un bout de code de Inet.au3 et je n'ai pas de problème. J'ai AutoIt 3.3.12.0 (version US officielle).
► Afficher le texte
Code : Tout sélectionner
#include <Date.au3>
#include <Inet.au3>
Dim $aSend[5]
$sFromName = "Tartempion"
$sFromAddress = "a@a.a"
$sToAddress = "a@a.a"
$s_Subject = "Sujet"
Local $aResult = _Date_Time_GetTimeZoneInformation() ; => Inet.au3 ligne 162
Local $iBias = -$aResult[1] / 60
Local $iBiasH = Int($iBias)
Local $iBiasM = 0
If $iBiasH <> $iBias Then $iBiasM = Abs($iBias - $iBiasH) * 60
$iBias = StringFormat(" (%+.2d%.2d)", $iBiasH, $iBiasM)
$aSend[4] = "From:" & $sFromName & "<" & $sFromAddress & ">" & @CRLF & _
"To:" & "<" & $sToAddress & ">" & @CRLF & _
"Subject:" & $s_Subject & @CRLF & _
"Mime-Version: 1.0" & @CRLF & _
"Date: " & _DateDayOfWeek(@WDAY, 1) & ", " & @MDAY & " " & _DateToMonth(@MON, 1) & " " & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & $iBias & @CRLF & _
"Content-Type: text/plain; charset=US-ASCII" & @CRLF & _
@CRLF ; => Inet.au3 ligne 176
ConsoleWrite($aSend[4])
Code : Tout sélectionner
$aSend[4] retourne :
From:Tartempion<a@a.a>
To:<a@a.a>
Subject:Sujet
Mime-Version: 1.0
Date: Wed, 02 Jul 2014 18:36:19 (+0100)
Content-Type: text/plain; charset=US-ASCII
Re: [R] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 20:23
par aulus
Oui, c'est le pack proposé en téléchargement sur ce forum.
Re: [R] _INetSmtpMail : erreur de date
Posté : mer. 02 juil. 2014 21:05
par Tlem
@jchd et orax
Pour information, dans la dernière version du Pack AutoIt.fr (2.3.5) seul le fichier
\Include\GuiMonthCal.au3 est modifié pour traduire localement le nom des jours et des mois.
Effectivement dans la 2.3.4 le fichier
\Include\Date.au3 était lui aussi modifié. Je conseille donc à aulus d'installer la 2.3.5 pour voir si cela corrige son problème.

Re: [R] _INetSmtpMail : erreur de date
Posté : jeu. 03 juil. 2014 07:47
par aulus
Merci Tlem,
La version proposée à l'adresse
http://www.autoitscript.fr/forum/viewto ... =22&t=2573 est-elle celle que vous conseillez ?
Re: [R] _INetSmtpMail : erreur de date
Posté : jeu. 03 juil. 2014 22:10
par Tlem
Oui
Envoyé depuis mon appareil mobile.
Re: [R] _INetSmtpMail : erreur de date
Posté : ven. 04 juil. 2014 10:18
par aulus
Bonjour,
J'ai installé le pack français.
Pour info :
J'ai eu cet avertissement à l'installation de Scite4AutoIt3 sous Windows 7 (64 bits) :
This installer requires the Autoit3 production release to be installed first.
Stopping installation
Accompagné de l'avertissement Windows :
Le programme ne s'est pas installé correctement... etc.
Après essai, il semble pourtant qu'il se soit bien installé !
Concernant le problème de date, celle-ci apparaît bien en anglais et est correcte à la réception des courriels. Le problème est peut-être bien résolu (je croise les doigts !)
J'ai testé la réception sous deux clients de messagerie. Le premier indique la bonne heure de l'envoi. Mais la seconde, Thunderbird, affiche une heure de plus : est-ce dû à un mauvais réglage de Thunderbird ? Et si oui, quelqu'un saurait-il où se règlent les problèmes de fuseau horaire dans ce logiciel ?
Vous remerciant pour tout.
Re: [R] _INetSmtpMail : erreur de date
Posté : dim. 06 juil. 2014 02:59
par orax
Édité : ceci est une date que j'avais générée avec l'UDF (Inet.au3 je crois) : Date: Wed, 02 Jul 2014 18:36:19 (+0100).
Sauf erreur de ma part, il n'y a pas le bon décalage horaire. Ça ne m'avait pas sauté aux yeux…

Je suppose que ça devrait être +0200 (puisque je suis en heure d'été).
Un truc à essayer :
Ligne :
à changer en :
Et il y a aussi ces parenthèses autour du décalage horaire qui me semblent bizarres.
- - - - - -
aulus a écrit :J'ai eu cet avertissement à l'installation de Scite4AutoIt3 sous Windows 7 (64 bits) :
This installer requires the Autoit3 production release to be installed first.
Stopping installation
Après essai, il semble pourtant qu'il se soit bien installé !
Tant mieux si c'est le cas mais c'est quand même étrange. À l'installation du pack, celui-ci propose de générer un fichier LOG. Ça pourrait peut-être apporter plus d'information sur l'erreur lors de l'installation.
Pour Thunderbird, je connais peu mais j'ai pu tester sur un poste où il est installé. Dans les colonnes Sujet, Expéditeur, … on peut ajouter deux dates : Date et Reçu. Enfin bon, ça me fait une belle jambe puisque je ne vois pas la différence entre les deux ! Les deux m'affichent la date de création du message, soit « Date: » dans l'en-tête.
Exemple, courriel écrit à 16h50 et mis en attente pour être envoyé à 17h20 ; horloge de l'ordi sur le fuseau Paris, heure d'été :
Code : Tout sélectionner
Received: from 127.0.0.1 ([1.1.1.1])
by xxxxxxxx with ME
id xxxxxxxx; Sat, 05 Jul 2014 17:20:00 +0200
Date: Sat, 05 Jul 2014 16:50:00 +0200
Thunderbird m'affiche 16:50:00 dans les colonnes Date et Reçu.
Ça serait bien d'avoir les en-têtes d'un message envoyé via le script (Date: surtout). Ou récupère les données que le script souhaite envoyer.
Re: [R] _INetSmtpMail : erreur de date
Posté : dim. 06 juil. 2014 08:07
par aulus
Merci pour l'intérêt que vous portez à mes questions.
orax a écrit :
Ça serait bien d'avoir les en-têtes d'un message envoyé via le script (Date: surtout). Ou récupère les données que le script souhaite envoyer.
Voici le source du courriel reçu via Thunderbird. Ce courriel a été envoyé à 7 h 45. Thunderbird affiche 8 h 45.
► Afficher le texte
Return-Path: <
expediteur@sfr.fr>
Received: from msfrf2303.sfr.fr (msfrf2303.priv.atos.fr [10.18.27.17])
by msfrb0505 (Cyrus v2.3.16) with LMTPA;
Sun, 06 Jul 2014 07:45:52
+0200
X-Sieve: CMU Sieve 2.3
Received: from filter.sfr.fr (localhost [79.52.90.91])
by msfrf2303.sfr.fr (SMTP Server) with ESMTP id 912A270001CC
for <
nce000000000000000011644943@back05-mail01-03.sfrmc.priv.atos.fr>; Sun, 6 Jul 2014 07:45:52 +0200 (CEST)
Received: from filter.sfr.fr (localhost [79.52.90.91])
by msfrf2303.sfr.fr (SMTP Server) with ESMTP id 7E30870001C8
for <
nce000000000000000011644943@1100.back05-mail01-03.sfrmc.priv.atos.fr>;
Sun, 6 Jul 2014 07:45:52
+0200 (CEST)
Authentication-Results: sfrmc.priv.atos.fr; dkim=none (no signature);
dkim-adsp=none (no policy) header.from=
expediteur@sfr.fr
Received: from HP_PORTABLE (91.91.84.79.rev.sfr.net [79.52.90.91])
by msfrf2303.sfr.fr (SMTP Server) with SMTP id 2B5E370001CC
for <
moi@cegetel.net>; Sun, 6 Jul 2014 07:45:52
+0200 (CEST)
X-SFR-UUID:
20140706054552177.2B5E370001CC@msfrf2303.sfr.fr
From: EXPEDITEUR <
expediteur@sfr.fr>
To:
moi@cegetel.net
Subject: Expéditeur : test date
Mime-Version: 1.0
Date: Sun, 06 Jul 2014 07:45:52
(+0100)
Message-Id: <
20140706054552.2B5E370001CC@msfrf2303.sfr.fr>
X-sfr-mailing: LEGIT
X-sfr-spam: not-spam
X-sfr-spamrating: 40.000000
X-sfr-spamcause: OK,
(0)(0000)gggruggvucftvghtrhhoucdtuddrfeejfedrudejucetufdoteggodetrfcurfhrohhfihhlvgemucfuhfftiffrpdevhhgvtghkvefgnecuuegrihhlohhuthemuceftddtnecunecuhfhrohhmpeeviffuucevhhgrsghlrghishcuoegtghhsrdgthhgrsghlrghishesshhfrhdrfhhrqeenucfjughrpefhvffuggffkfgtsehttddttddttddv
Content-Type: text/plain; charset=US-ASCII
orax a écrit :
À l'installation du pack, celui-ci propose de générer un fichier LOG. Ça pourrait peut-être apporter plus d'information sur l'erreur lors de l'installation.
Dans quel dossier se trouverait ce fichier LOG ? Je l'ai recherché sans succès.
Je m'absente ce week-end : je ne pourrai avoir accès à internet que demain soir lundi pour répondre à votre prochain message éventuel.
Merci encore et bon week-end à vous.
Re: [R] _INetSmtpMail : erreur de date
Posté : lun. 07 juil. 2014 16:09
par orax
aulus a écrit :Dans quel dossier se trouverait ce fichier LOG ? Je l'ai recherché sans succès.
Lors de l'installation du pack, il y a une case "Fichier .LOG" à cocher. Et il me pond un fichier "Log Pack_AutoIt.txt" sur le bureau.
Pour le problème de date.
Dans la fonction _INetSmtpMail de l'UDF Inet.au3 il faut remplacer les lignes suivantes :
Code : Tout sélectionner
Local $iBias = -$aResult[1] / 60
par
Local $iBias = -$aResult[1] / 60 - $aResult[7] / 60
et
$iBias = StringFormat(" (%+.2d%.2d)", $iBiasH, $iBiasM)
par
$iBias = StringFormat(" %+.2d%.2d", $iBiasH, $iBiasM)
Ce qui donne :
avant : Date: Mon, 07 Jul 2014 02:31:29 (+0100)
après : Date: Mon, 07 Jul 2014 02:31:29 +0200
Le décalage d'une heure de l'heure d'été n'était pas ajoutée.
De plus, la zone (c.a.d. +0200) ne doit pas être entre parenthèses. Par contre il est valide d'ajouter une sorte de commentaire, entre parenthèses, après la zone.
Comme ici : Sun, 6 Jul 2014 07:45:52 +0200 (CEST)
Re: [R] _INetSmtpMail : erreur de date
Posté : lun. 07 juil. 2014 21:21
par jchd
Pour info (CEST) n'est pas un commentaire arbitraire mais le nom officiel de la zone de temps, ici "Central East Standard Time".