Was ist ein gültiges Format einer E-Mail-Adresse?

Was ist ein gültiges Format einer E-Mail-Adresse?

Es gibt viele mögliche Gründe, warum eine E-Mail nicht versendet oder empfangen werden kann. Wenn Ihre Nachricht es bis zum E-Mail Provider des Empfängers geschafft hat, bekommen Sie häufig eine Antwortmail, die Ihnen Hinweise auf mögliche Ursachen gibt. Allerdings sind diese E-Mails meistens technisch oder zu kryptisch, um das Problem verständlich zu erklären. Hier finden Sie ein paar gängige Gründe für fehlgeschlagene Nachrichten.

Ungültige E-Mail-Adresse

Meistens ist der Grund einfach – die E-Mail-Adresse ist ungültig. Dies könnte folgende Ursachen haben:

  • Leerzeichen oder nicht erlaubte Zeichen wurden gesetzt, z.B. “hans ”
  • der zweite Teil fehlt (Domain), z.B. “hans.peter” anstatt “hans.”
  • falscher Domain Name, z.B. “” anstatt “hans.”

Keine existierende E-Mail-Adresse

Wenn Sie an eine E-Mail-Adresse schicken, die nicht mehr vorhanden ist – beispielsweise, wenn ein Mitarbeiter die Firma verlassen hat.

Limitierte E-Mail Account Kapazität

Ein weiterer Grund für eine Fehlermeldung ist die eingeschränkte Speicherkapazität der Mailbox des Empfängers. Wenn ein E-Mail Nutzer sein Speicherlimit erreicht hat, ist es üblich, dass keine eingehenden E-Mails mehr akzeptiert werden bis wieder freier Speicherplatz geschaffen wird.

E-Mail-Adressen auf der Blacklist

E-Mail-Adressen auf der Blacklist sind Email-Adressen, die absichtlich geblockt werden – normalerweise bezieht es sich auf die E-Mail-Adresse (genauer gesagt auf den Server des Providers), die mit der Verbreitung von Spam in Verbindung gebracht wurde. Allerdings werden manchmal auch harmlose E-Mail-Adressen blockiert. Meistens sind Blockierungen nur temporär. Am besten kontaktieren Sie den Provider, wenn Sie von der Blockierung wissen. Dort wird die Blockierung überprüft und es werden die entsprechenden Maßnahmen durchgeführt, um die Blockierung zu entfernen.

SPF

E-Mails können auch fehlgeleitet werden auf Grund von inkorrekten oder fehlenden SPF-Records. Weitere Informationen hierzu finden Sie unter: Sender Policy Framework (SPF) E-Mail Überprüfung

Praxis & Tipps | Tipps & Tricks

Sind E-Mail-Adressen der Form , also mit Unterstrich am Anfang, erlaubt? Wo kann man solche Informationen im Internet finden?

Die von Ihnen angegebene E-Mail-Adresse ist gültig. Solche Informationen sind in den so genannten RFCs (Request for Comment) festgehalten. In diesen Texten sind die Standards rund um das Internet dokumentiert. Unter www.rfc-editor.org kann man sie auch online durchsuchen. Das in diesem Fall relevante Dokument ist RFC 822. (mst)

Im folgenden Beispiel wird mit einem regulären Ausdruck geprüft, ob eine Zeichenfolge ein gültiges E-Mail-Format aufweist.

Im Vergleich dazu, was tatsächlich als E-Mail-Adresse verwendet werden kann, ist dieser reguläre Ausdruck einfach. Die Verwendung eines regulären Ausdrucks zum Überprüfen einer E-Mail-Adresse ist nützlich, um sicherzustellen, dass die Struktur einer E-Mail-Adresse korrekt ist. Sie ist allerdings kein Ersatz für die Überprüfung der tatsächlichen Existenz einer E-Mail-Adresse.

✔️ VERWENDEN SIE einen einfachen regulären Ausdruck, um die Struktur einer E-Mail-Adresse zu überprüfen.

✔️ SENDEN SIE eine Test-E-Mail an die von einem Benutzer Ihrer App angegebene Adresse.

❌ Verwenden Sie einen regulären Ausdruck NICHT als einzige Methode zum Überprüfen einer E-Mail-Adresse.

Wenn Sie versuchen, den perfekten regulären Ausdruck zum Überprüfen der korrekten Struktur einer E-Mail-Adresse zu erstellen, wird dieser Ausdruck so komplex, dass es äußerst schwierig wird, ihn zu debuggen oder zu verbessern. Reguläre Ausdrücke können nicht überprüfen, ob eine E-Mail-Adresse existiert, auch wenn sie richtig strukturiert ist. Die beste Möglichkeit, eine E-Mail-Adresse zu überprüfen, ist das Senden einer Test-E-Mail an diese Adresse.

Warnung

Übergeben Sie ein Timeout, wenn Sie System.Text.RegularExpressions zum Verarbeiten nicht vertrauenswürdiger Eingaben verwenden. Ein böswilliger Benutzer kann Eingaben für RegularExpressions angeben, um einen RegularExpressions durchzuführen. ASP.NET Core-Framework-APIs, die RegularExpressions verwenden, übergeben ein Timeout.

Beispiel

Im Beispiel wird eine Methode IsValidEmail definiert, die true zurückgibt, wenn die Zeichenfolge eine gültige E-Mail-Adresse enthält, und false, wenn nicht. Sie führt jedoch keine weitere Aktion aus.

Um die Gültigkeit der E-Mail-Adresse zu überprüfen ruft die IsValidEmail -Methode die Regex.Replace(String, String, MatchEvaluator) -Methode mit dem regulären Ausdruck (@)(.+)$ auf, um den Domänennamen von der E-Mail-Adresse zu trennen. Der dritte Parameter ist ein MatchEvaluator -Delegat, der die Methode darstellt, die den gefundenen Text verarbeitet und ersetzt. Das Muster des regulären Ausdrucks wird wie folgt interpretiert:

Muster Beschreibung
(@) Das @ Zeichen wird als Übereinstimmung verwendet. Dieser Teil stellt die erste Erfassungsgruppe dar.
(.+) Ein- oder mehrmalige Übereinstimmung mit beliebigem Zeichen. Dieser Teil stellt die zweite Erfassungsgruppe dar.
$ Beendet die Suche am Ende der Zeichenfolge.

Der Domänenname wird zusammen mit dem @ Zeichen der DomainMapper -Methode übergeben, die die IdnMapping -Klasse verwendet, um Unicode-Zeichen in ihre Punycode-Entsprechungen zu übersetzen, die außerhalb des 7-Bit-ASCII-Zeichenbereichs liegen. Darüber hinaus wird die Methode auch das invalid -Flag auf True fest, wenn die IdnMapping.GetAscii -Methode ein unzulässiges Zeichen im Domänennamen erkennt. Diese Methode gibt den Punycode-Domänennamen, der dem @ Zeichen vorangestellt ist, an die IsValidEmail -Methode zurück.

Tipp

Es wird empfohlen, dass Sie einen einfachen regulären Ausdruck mit dem Muster (@)(.+)$ verwenden, um die Domäne zu normalisieren und dann einen Wert zurückzugeben, der angibt, ob die Adresse die Überprüfung bestanden hat oder nicht. Im Beispiel in diesem Artikel werden jedoch weitere Möglichkeiten beschrieben, wie Sie einen regulären Ausdruck zur Überprüfung der E-Mail-Adresse verwenden können. Unabhängig davon, wie Sie eine E-Mail-Adresse überprüfen, sollten Sie immer eine Test-E-Mail an die Adresse senden, um sicherzustellen, dass diese existiert.

Die IsValidEmail-Methode ruft dann die Regex.IsMatch(String, String)-Methode auf, um zu überprüfen, ob die Adresse dem Muster eines regulären Ausdrucks entspricht.

Die Methode IsValidEmail überprüft lediglich, ob das Format der E-Mail-Adresse gültig ist. Sie überprüft nicht, ob die E-Mail-Adresse existiert. Außerdem überprüft die IsValidEmail -Methode nicht, ob der Domänenname der obersten Ebene ein gültiger Domänenname ist, der in der IANA-Stammzonendatenbank aufgeführt ist, was einen Nachschauvorgang erfordern würde.IsValidEmail

using System; using System.Globalization; using System.Text.RegularExpressions; namespace RegexExamples { class RegexUtilities { public static bool IsValidEmail(string email) { if (string.IsNullOrWhiteSpace(email)) return false; try { // Normalize the domain email = Regex.Replace(email, @"(@)(.+)$", DomainMapper, RegexOptions.None, TimeSpan.FromMilliseconds(200)); // Examines the domain part of the email and normalizes it. string DomainMapper(Match match) { // Use IdnMapping class to convert Unicode domain names. var idn = new IdnMapping(); // Pull out and process domain name (throws ArgumentException on invalid) string domainName = idn.GetAscii(match.Groups[2].Value); return match.Groups[1].Value + domainName; } } catch (RegexMatchTimeoutException e) { return false; } catch (ArgumentException e) { return false; } try { return Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$", RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250)); } catch (RegexMatchTimeoutException) { return false; } } } } Imports System.Globalization Imports System.Text.RegularExpressions Public Class RegexUtilities Public Shared Function IsValidEmail(email As String) As Boolean If String.IsNullOrWhiteSpace(email) Then Return False ' Use IdnMapping class to convert Unicode domain names. Try 'Examines the domain part of the email and normalizes it. Dim DomainMapper = Function(match As Match) As String 'Use IdnMapping class to convert Unicode domain names. Dim idn = New IdnMapping 'Pull out and process domain name (throws ArgumentException on invalid) Dim domainName As String = idn.GetAscii(match.Groups(2).Value) Return match.Groups(1).Value & domainName End Function 'Normalize the domain email = Regex.Replace(email, "(@)(.+)$", DomainMapper, RegexOptions.None, TimeSpan.FromMilliseconds(200)) Catch e As RegexMatchTimeoutException Return False Catch e As ArgumentException Return False End Try Try Return Regex.IsMatch(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$", RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250)) Catch e As RegexMatchTimeoutException Return False End Try End Function End Class

In diesem Beispiel kann das Muster des regulären Ausdrucks ^[^@\s]+@[^@\s]+\.[^@\s]+$ wie in der folgenden Tabelle dargestellt interpretiert werden. Der reguläre Ausdruck wird mit dem Flag RegexOptions.IgnoreCase kompiliert.

Muster BESCHREIBUNG
^ Starten Sie den Vergleich am Beginn der Zeichenfolge.
[^@\s]+ Überprüfung der einmaligen oder mehrmaligen Verwendung eines beliebigen Zeichens bis auf das @-Zeichen und das Leerzeichen
@ Das @ Zeichen wird als Übereinstimmung verwendet.
[^@\s]+ Überprüfung der einmaligen oder mehrmaligen Verwendung eines beliebigen Zeichens bis auf das @-Zeichen und das Leerzeichen
\. Überprüfung der Verwendung eines einzelnen Punkts
[^@\s]+ Überprüfung der einmaligen oder mehrmaligen Verwendung eines beliebigen Zeichens bis auf das @-Zeichen und das Leerzeichen
$ Beendet die Suche am Ende der Zeichenfolge.

Wichtig

Dieser reguläre Ausdruck soll nicht jeden Aspekt einer gültigen E-Mail-Adresse abdecken. Er wird vielmehr als Beispiel bereitgestellt, das Sie nach Bedarf erweitern können.

Siehe auch