toutes les fiches

// comment corriger

Gmail « 550-5.7.1 ... is not RFC 5322 compliant » : corriger les en-têtes absents ou en double

Gmail a refusé votre email car ses en-têtes ne respectent pas la norme RFC 5322 : From, Date ou Message-ID absent ou en double. Voici comment corriger.

Ce que ça veut dire

Chaque email possède une partie en-têtes avec des champs comme From, To, Date, Subject et Message-ID. La RFC 5322 est la norme qui définit comment ces en-têtes doivent être écrits. Gmail refuse les emails qui enfreignent les règles de base. Le message d'erreur ressemble généralement à ceci :

550-5.7.1 [203.0.113.10] Our system has detected that this message is not
550-5.7.1 RFC 5322 compliant:
550-5.7.1 'From' header is missing.
550-5.7.1 To reduce the amount of spam sent to Gmail, this message has been
550-5.7.1 blocked. Please visit
550-5.7.1  https://support.google.com/mail/?p=RfcMessageNonCompliant
550 5.7.1 and review RFC 5322 specifications for more information.

La ligne du milieu indique ce qui ne va pas, par exemple Multiple 'From' headers found ou un en-tête absent ou invalide. Lisez-la attentivement : c'est la clé de la correction.

Pourquoi cela arrive

Cette erreur vient presque toujours d'une application, d'un script ou d'une extension qui fabrique les emails lui-même, plutôt que d'un logiciel de messagerie classique :

  • Pas d'en-tête From, ou un From avec une adresse invalide (espaces, domaine manquant, guillemets incorrects autour du nom affiché).
  • En-têtes en double : deux lignes From, Subject, To ou Date, souvent parce que le code ajoute un en-tête que la bibliothèque d'envoi ajoute déjà.
  • Date ou Message-ID absent, ou une Date au mauvais format.
  • En-têtes mal formés : lignes mal encodées, caractères non ASCII sans encodage dans un en-tête, ou saut de ligne cassé qui mélange les en-têtes avec le corps du message.

Comment vérifier

  • Envoyez un email de test : sur la page d'accueil de Delivmail (/), copiez votre adresse de test unique et envoyez-lui un email normal depuis le serveur, l'outil ou la boîte mail qui a reçu l'erreur. Ouvrez le rapport dès qu'il est prêt.
  • Examinez les en-têtes dans le rapport, ou affichez la source originale de l'email (dans Gmail, « Afficher l'original »). Vérifiez qu'il y a exactement un From, une Date, un Subject et un Message-ID.
  • Examinez le code d'envoi. Cherchez les endroits où des en-têtes sont ajoutés à la main, comme des chaînes From: concaténées dans des appels PHP mail().

Comment corriger

  1. Utilisez une vraie bibliothèque d'envoi (PHPMailer, Nodemailer, le module email de votre framework) au lieu de construire les en-têtes en texte. Ces bibliothèques ajoutent Date et Message-ID et encodent correctement les en-têtes.
  2. Définissez exactement une adresse From au bon format, par exemple :
    From: Your Shop <orders@yourdomain.com>
    Mettez entre guillemets les noms affichés qui contiennent des virgules ou des caractères spéciaux.
  3. Supprimez les en-têtes en double. Si la bibliothèque définit déjà From ou Subject, ne les ajoutez pas une seconde fois dans une liste d'en-têtes personnalisés.
  4. Ajoutez une Date et un Message-ID si votre système ne le fait pas. Un Message-ID ressemble à <unique-id@yourdomain.com>.
  5. Encodez les caractères accentués et non anglais dans le Subject et les noms grâce à l'encodage intégré de votre bibliothèque.
  6. Utilisez les bonnes fins de ligne (CRLF) entre les en-têtes, et une ligne vide entre les en-têtes et le corps.
  7. Mettez à jour vos extensions (extensions WordPress de formulaire ou SMTP, modules de boutique) : les anciennes versions causent souvent ces erreurs.

Vérifiez que c'est corrigé

Envoyez un nouvel email depuis la même application vers une nouvelle adresse de test Delivmail et contrôlez les en-têtes dans le rapport. Quand ils sont corrects, renvoyez l'email à l'adresse Gmail qui l'avait refusé. Pour cette erreur, il n'y a pas de délai lié à la réputation : dès que les en-têtes sont valides, Gmail cesse de refuser pour cette raison.

Vérifiez que c'est corrigé

Une modification DNS peut prendre de quelques minutes à quelques heures. Ensuite, envoyez un nouvel email de test ou scannez à nouveau votre domaine.

Fiches liées