Comment corriger INVALID_EMAIL_ADDRESS dans les déploiements Salesforce

Un enregistrement en cours d'enregistrement a une valeur dans un champ e-mail qui ne correspond pas à la validation de format e-mail de Salesforce.

Apparaît pendant : le DML à l'exécution, le plus souvent lors de la configuration de tests Apex ou d'un chargement de données

Ce que cela signifie

INVALID_EMAIL_ADDRESS signifie qu'un champ marqué comme de type Email sur l'objet a reçu une valeur que le contrôle de format intégré de Salesforce rejette, absence de symbole @, forme de domaine invalide, ou espaces superflus. Salesforce valide les champs e-mail au niveau de la plateforme quelles que soient les règles de validation personnalisées, donc cela se produit même sur des objets sans automatisation spécifique à l'e-mail.

Le contrôle intégré de Salesforce est volontairement permissif quant à ce qui constitue un domaine valide, donc la plupart des adresses réelles passent ; les valeurs qui échouent sont presque toujours des données de test synthétiques ou des données factices plutôt que de véritables fautes de frappe dans de vrais e-mails clients.

Diagnostic

Causes courantes

Les données de test ou de départ utilisent une adresse malformée
Les données de fixture incluent une valeur de substitution qui n'a jamais correspondu à une forme d'e-mail valide, comme un simple nom d'utilisateur ou un domaine sans point.
La migration a mappé la mauvaise colonne source
Un mapping de champ dans le script ETL ou de chargement de données pointe une colonne texte sans rapport vers le champ Email au lieu de la véritable source d'e-mail.
Un espace réservé interne ou spécifique à une locale s'est glissé
Une valeur marqueur interne, comme « n/a » ou une valeur par défaut système, a été chargée dans un champ Email obligatoire au lieu d'être laissée vide.

La solution

  1. Corrigez la valeur fautive à la source
    Corrigez l'adresse malformée dans la fixture de test ou les données source plutôt que de contourner la validation du champ.
  2. Utilisez des adresses bien formées dans les fixtures
    Standardisez sur un motif comme [email protected] pour les données de test générées, afin qu'elles réussissent toujours la validation e-mail.
    String testEmail = 'test-user+' + String.valueOf(Math.abs(Crypto.getRandomInteger())) + '@example.com';
  3. Auditez le mapping de champs de la migration
    Confirmez que la colonne source alimentant le champ Email contient bien des adresses e-mail avant l'exécution du prochain chargement.
En pratique

Comment Serpent évite cela

Parce que Serpent exécute l'intégralité de la suite de tests, y compris toute configuration de données, sur chaque tâche avant la fusion, un e-mail malformé dans les fixtures de test apparaît sur la branche qui l'a introduit au lieu de bloquer une release en production plus tard. Consultez la bibliothèque des erreurs de déploiement Salesforce.

Métadonnées et données dans un seul flux de déploiement dans Serpent

Prévention

Centralisez la génération d'e-mails de test dans une méthode factory partagée
Faites passer chaque classe de test par un utilitaire unique qui produit des adresses e-mail garanties valides et uniques, plutôt que de laisser chaque test écrire la sienne à la main.
Validez les colonnes e-mail avant une migration, pas après son échec
Exécutez une vérification regex légère sur la colonne source mappée à Email, dans le cadre du profilage des données avant migration.
Ne chargez jamais de valeurs sentinelles dans un véritable champ de type Email
Utilisez une valeur null ou un champ indicateur dédié pour « inconnu » ou « non applicable » plutôt que d'écrire une chaîne de substitution dans un champ Email.
Questions fréquentes

INVALID_EMAIL_ADDRESS, expliqué

Puis-je contourner la validation e-mail pour un enregistrement spécifique ?
Non. Salesforce applique le contrôle de format e-mail sur les champs de type Email quelles que soient les règles de validation ou les paramètres de déclencheur ; la valeur elle-même doit avoir une forme valide.
Cela s'applique-t-il à un champ Texte contenant une valeur ressemblant à un e-mail, ou seulement aux vrais champs Email ?
Seuls les véritables champs de type Email déclenchent ce contrôle au niveau de la plateforme. Un champ Texte contenant une chaîne en forme d'e-mail n'est pas validé, sauf si une règle de validation distincte l'impose.
Un champ Email vide déclenche-t-il jamais cette erreur ?
Non, sauf si le champ est également marqué obligatoire, auquel cas l'échec est REQUIRED_FIELD_MISSING plutôt qu'INVALID_EMAIL_ADDRESS. Un champ Email optionnel vide est toujours accepté.

Commencez gratuitement. Sans carte bancaire, sans installation, sans engagement.

Configuration en moins de 15 minutes. Aucune embauche DevOps nécessaire.

Curieux de livrer plus vite avant de vous lancer ? Parlons-en

Sans engagement.