So beheben Sie INVALID_EMAIL_ADDRESS in Salesforce-Deployments

Ein gespeicherter Datensatz enthält in einem E-Mail-Feld einen Wert, der nicht der E-Mail-Formatvalidierung von Salesforce entspricht.

Tritt auf bei: Laufzeit-DML, meist beim Apex-Test-Setup oder einem Datenladevorgang

Was das bedeutet

INVALID_EMAIL_ADDRESS bedeutet, dass ein als Email-Typ markiertes Feld am Objekt einen Wert erhielt, den die integrierte Formatprüfung von Salesforce ablehnt, etwa ein fehlendes @-Zeichen, eine ungültige Domainform oder überflüssige Leerzeichen. Salesforce validiert E-Mail-Felder auf Plattformebene, unabhängig von benutzerdefinierten Validierungsregeln, sodass dies selbst bei Objekten ohne eigene e-mail-spezifische Automatisierung auftritt.

Die integrierte Prüfung von Salesforce ist bewusst großzügig hinsichtlich dessen, was als gültige Domain zählt, sodass die meisten realen Adressen bestehen; die fehlschlagenden Werte sind fast immer synthetische Test- oder Platzhalterdaten statt echter Tippfehler in echten Kunden-E-Mails.

Diagnose

Häufige Ursachen

Test- oder Seed-Daten verwenden eine fehlerhafte Adresse
Fixture-Daten enthalten einen Platzhalterwert, der nie einer gültigen E-Mail-Form entsprach, etwa ein bloßer Benutzername oder eine Domain ohne Punkt.
Migration hat die falsche Quellspalte zugeordnet
Eine Feldzuordnung im ETL- oder Datenladeskript verweist eine unabhängige Textspalte auf das Email-Feld statt auf die tatsächliche E-Mail-Quelle.
Ein interner oder gebietsschema-spezifischer Platzhalter ist durchgerutscht
Ein interner Markierungswert, wie „n/a“ oder ein Systemstandard, wurde in ein Pflicht-Email-Feld geladen, statt es leer zu lassen.

Die Lösung

  1. Beheben Sie den fehlerhaften Wert an der Quelle
    Korrigieren Sie die fehlerhafte Adresse in der Test-Fixture oder den Quelldaten, statt die Feldvalidierung zu umgehen.
  2. Verwenden Sie wohlgeformte Adressen in Fixtures
    Standardisieren Sie generierte Testdaten auf ein Muster wie [email protected], damit sie die E-Mail-Validierung immer bestehen.
    String testEmail = 'test-user+' + String.valueOf(Math.abs(Crypto.getRandomInteger())) + '@example.com';
  3. Feldzuordnung der Migration überprüfen
    Bestätigen Sie, dass die Quellspalte, die das Email-Feld speist, tatsächlich E-Mail-Adressen enthält, bevor der nächste Ladevorgang läuft.
In der Praxis

Wie Serpent das verhindert

Da Serpent die vollständige Testsuite, einschließlich jedes Daten-Setups, bei jeder Aufgabe vor dem Merge ausführt, wird eine fehlerhafte E-Mail in Test-Fixtures auf dem Branch sichtbar, der sie eingeführt hat, statt später einen Produktions-Release zu blockieren. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Erzeugung von Test-E-Mails in einer gemeinsamen Factory-Methode zentralisieren
Leiten Sie jede Testklasse durch ein einziges Utility, das garantiert gültige, eindeutige E-Mail-Adressen erzeugt, statt jeden Test seine eigene handschreiben zu lassen.
E-Mail-Spalten vor einer Migration validieren, nicht nach deren Fehlschlag
Führen Sie als Teil des Daten-Profilings vor der Migration eine leichte Regex-Prüfung der auf Email abgebildeten Quellspalte durch.
Niemals Sentinel-Werte in ein echtes Email-Feld laden
Verwenden Sie einen Nullwert oder ein dediziertes Flag-Feld für „unbekannt“ oder „nicht zutreffend“, statt eine Platzhalterzeichenfolge in ein Email-Feld zu schreiben.
Häufige Fragen

INVALID_EMAIL_ADDRESS, erklärt

Kann ich die E-Mail-Validierung für einen bestimmten Datensatz umgehen?
Nein. Salesforce erzwingt die E-Mail-Formatprüfung bei Email-Typ-Feldern unabhängig von Validierungsregeln oder Trigger-Einstellungen; der Wert selbst muss eine gültige Form haben.
Gilt dies für ein Textfeld mit einem e-mail-ähnlichen Wert oder nur für echte Email-Felder?
Nur echte Email-Typ-Felder lösen diese Prüfung auf Plattformebene aus. Ein Textfeld mit einer e-mail-förmigen Zeichenfolge wird nicht validiert, es sei denn, eine separate Validierungsregel erzwingt dies.
Löst ein leeres Email-Feld jemals diesen Fehler aus?
Nein, außer das Feld ist zusätzlich als Pflichtfeld markiert; dann lautet der Fehler REQUIRED_FIELD_MISSING statt INVALID_EMAIL_ADDRESS. Ein leeres optionales Email-Feld wird immer akzeptiert.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.