Date et heure de réception d'un mail envoyé par mail()

Petit nouveau ! | 6 Messages

16 nov. 2015, 09:43

Bonjour,

J'ai développé une routine d'envoi d'une newsletter. Lorsque je formate la lettre, j'y ajoute la date et l'heure d'envoi dans l'en-tête via le bout de code suivant :

Code : Tout sélectionner

$entete .= "Date: ". date("D, j M Y H:i:s");
Lors de l'envoi, des abonnés reçoivent la lettre avec une heure différente de celle de l'envoi (tandis que je la reçois personnellement avec la bonne heure).

Pour certains l'heure est simplement différente, pour d'autres elles est 00:00:00

J'ai demandé à un des destinataires l'ayant reçue avec la mauvaise heure de me transmettre l'en-tête du mail reçu. Toutes les heures qui y apparaissent sont les bonnes.

J'en viens donc à la (ou les) question(s). D'où provient ce problème ? A quel niveau est défini l'heure de réception ? Dois-je modifier quelque chose au niveau de mon code ?

D'avance merci pour vos réponses, votre collaboration.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 nov. 2015, 10:12

Bonjour,

Le champ "Date" en entête du mail n'est pas la date de réception, mais la date (et heure) à laquelle l'expéditeur indique que l'écriture du mail a été finalisé et donc juste avant l'entrée du message dans le système d'envoi de mail (SMTP).
Cette date/heure n'a aucune valeur particulière puisque n'importe qui peut mettre n'importe quoi, du coup les client de messagerie email n'en tiennent pas forcément compte.
Certaines messagerie vont afficher cette heure, d'autre vont afficher l'heure à laquelle le mail a été reçu sur leurs serveurs car c'est + fiable.

Par ailleurs, il me semble que le format de date que tu utilises est faux, cf la spec RFC822 qui précise le format attendu pour les champs date-time :
https://tools.ietf.org/html/rfc822#appendix-D
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

16 nov. 2015, 11:44

Puis-je en conclure que je ne peux rien faire et que ce problème d'heure n'est dû qu'au serveurs de mails entrant des destinataires ou à leur logiciel de messagerie ? ... sous réserve que ce ne soit pas dû au formatage de mon date-time

Merci pour ta réponse et le lien transmis donc je vais prendre connaissance sans plus tarder.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 nov. 2015, 14:15

Tout à fait, c'est le logiciel de messagerie/webmail qui choisit quelle date il veut afficher.

Il fut un temps (très ancien) où certains logiciels (type Eudora) utilisaient ce champ date comme date/heure principale pour les messages, et cela avait pour conséquence que si l'ordinateur de l'expéditeur n'avait pas la bonne heure ou encore pire la bonne date (par exemple 1er janvier 1970), son message se retrouvait classé par date tout en bas de sa liste de mail et donc quasiment impossible à voir pour celui qui reçoit le mail.

Cette technique a été également utilisé par de nombreux étudiants qui avaient des rendus à effectuer par e-mail avant telle date/heure à qui il suffisait de changer la date de leur PC pour faire croire au professeur qu'ils l'avaient envoyé à temps.
Bref, c'est entre autres pour ces raisons que le champ Date en header indiqué par l'expéditeur n'est plus utilisé ou très rarement.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

17 nov. 2015, 11:53

Merci pour ma culture personnelle ;)