E-Mail-Adresse in Python validieren
-
Verwenden Sie
regex
, um E-Mails in Python zu validieren -
Verwenden Sie
dnspython
, um E-Mails in Python zu validieren
Die E-Mail-Validierung ist ein wichtiger Teil der Benutzerreise innerhalb einer geschlossenen Anwendung, und sie ist wichtig, insbesondere für die Sicherheit und die Verringerung der Benutzerabwanderung. Es gibt verschiedene Methoden, um die E-Mail zu validieren, und es ist wichtig, die Struktur der typischen E-Mail-Adresse zu verstehen.
Es gibt integrierte Funktionen wie regex
und Bibliotheken wie dnspython
, die bei diesen Prozessen helfen. In diesem Artikel wird erläutert, wie Sie diese Funktionen und Bibliotheken verwenden, um E-Mails in Python zu validieren.
Verwenden Sie regex
, um E-Mails in Python zu validieren
Regulärer Ausdruck, im Volksmund regex
genannt, ist eine Zeichenfolge, die ein Suchmuster im Text angibt und für Suchalgorithmen in Strings und zum Suchen
und Suchen und Ersetzen
hilfreich ist.
Mit regex
können wir bestimmte Muster innerhalb der E-Mail-Adresse finden, die wir vom Benutzer erhalten. Jede E-Mail-Adresse hat das gleiche Muster, [Benutzername]@[smtp-Server].com
.
Wir können regex
verwenden, um den Teil Benutzername
und den Teil SMTP server
zu finden. Um zu verstehen, wie man regex
verwendet, müssen Sie sich mit Metazeichen, speziellen Sequenzen und Mengen auskennen.
Mit diesem Wissen können wir ein regex
-Muster mit der compile
-Methode erstellen und kompilieren und die match
-Methode verwenden, um die Zeichenfolge der E-Mail-Adresse des Benutzers zu vergleichen und zu verifizieren. In Python benötigen wir zur Verwendung von regex
die Bibliothek re
, die den regulären Ausdruck unterstützt.
import re
user_email = input("Enter your Email Address: ")
pattern = re.compile(r"\"?([-a-zA-Z0-9.`?{}]+@\w+\.\w+)\"?")
if not re.match(pattern, user_email):
print(f"{user_email} is not a valid email address")
else:
print(f"Your {user_email} is a valid email address")
Ausgang:
PS C:\Users\akinl\Documents\Python> python email.py
Enter your Email Address: akin@gm.com
Your akin@gm.com is a valid email address
PS C:\Users\akinl\Documents\Python> python email.py
Enter your Email Address: dx@s
dx@s is not a valid email address
Das \"?([-a-zA-Z0-9.?{}]+@\w+\.\w+)\"?
string enthält das Regex-Muster, mit dem wir die E-Mail-Adresse des Benutzers vergleichen.
Mit der ersten Eingabe akin@gm.com
enthält die E-Mail alle erforderlichen Muster und Strukturen, um eine gültige E-Mail vom Benutzernamen an den SMTP-Server zu erstellen. Für dx@s
ist der SMTP-Server jedoch nicht vorhanden.
Wir können auch nach einer Übereinstimmung suchen, indem wir die Methode fullmatch
verwenden, die bei Python 3.x am meisten bevorzugt wird. Der Code ist ähnlich, aber wir müssen nur die Methode match
auf fullmatch
ändern.
Der Unterschied zwischen match
und fullmatch
besteht darin, dass match
nur am Anfang zutrifft, während fullmatch
den gesamten Text der Zeichenfolge bis zum Ende abdeckt.
import re
user_email = input("Enter your Email Address: ")
pattern = re.compile(r"\"?([-a-zA-Z0-9.`?{}]+@\w+\.\w+)\"?")
if not re.fullmatch(pattern, user_email):
print(f"{user_email} is not a valid email address")
else:
print(f"Your {user_email} is a valid email address")
Ausgang:
PS C:\Users\akinl\Documents\Python> python email.py
Enter your Email Address: akin@gmail.com
Your akin@gmail.com is a valid email address
Damit können wir auf eine gültige E-Mail-Struktur prüfen, jedoch nicht, ob der SMTP-Server existiert, was ebenso wichtig ist. Hier kommt das nächste Feature ins Spiel.
Verwenden Sie dnspython
, um E-Mails in Python zu validieren
Mit der dnspython
-Bibliothek können wir den SMTP-Teil der E-Mail validieren, um zu sehen, ob er echt und nicht erfunden ist. Nachdem wir die E-Mail überprüft und validiert haben, können wir den Teil des SMTP-Servers aufteilen und mit der Methode resolve
überprüfen.
Da dnspython
keine eingebaute Bibliothek ist, müssen wir es über pip
installieren.
pip install dnspython
Nach der Installation von dnspython
können wir es in unseren Code importieren und mit der Methode resolve
nach einem gültigen SMTP-Server suchen.
import dns.resolver
try:
answers = dns.resolver.resolve("google.com", "MX")
for rdata in answers:
print("Host", rdata.exchange, "has preference", rdata.preference)
print(bool(answers))
except dns.exception.DNSException as e:
print("Email Doesn't Exist")
Ausgang:
Host smtp.google.com. has preference 10
True
Um den SMTP-Server zu überprüfen, übergeben wir das Attribut MX
an die Methode resolve
, um den Datensatz mail exchange
zu überprüfen, und die zurückgegebenen rdata
sind nützlich, um die Attributwerte exchange
und preference
anzuzeigen.
Wichtig ist aber, mit der Funktion bool
zu prüfen, ob innerhalb der Antwort
-Bindung Werte vorhanden sind. Wenn dort keine Werte vorhanden sind, bedeutet dies, dass der SMTP server
nicht gültig ist.
Um eine umfassende E-Mail-Validierungsprüfung durchzuführen, können wir die Codes regex
und dnspython
kombinieren.
import dns.resolver
import re
user_email = input("Enter your Email Address: ")
pattern = re.compile(r"\"?([-a-zA-Z0-9.`?{}]+@\w+\.\w+)\"?")
if not re.fullmatch(pattern, user_email):
print(f"{user_email} is not a valid email address.")
else:
domain = user_email.rsplit("@", 1)[-1]
try:
answers = dns.resolver.resolve(domain, "MX")
if bool(answers):
print(f"Your {user_email} is a valid email address.")
except dns.exception.DNSException as e:
print("Not a valid email server.")
Ausgang:
PS C:\Users\akinl\Documents\Python> python testEmail.py
Enter your Email Address: akin@gmail.com
Your akin@gmail.com is a valid email address.
PS C:\Users\akinl\Documents\Python> python testEmail.py
Enter your Email Address: ds.cem@fex.co
Your ds.cem@fex.co is a valid email address.
PS C:\Users\akinl\Documents\Python> python testEmail.py
Enter your Email Address: wer@fghj.com
Your wer@fghj.com is a valid email address.
PS C:\Users\akinl\Documents\Python> python testEmail.py
Enter your Email Address: df@werabsjaksa.com
Not a valid email server.
PS C:\Users\akinl\Documents\Python> python testEmail.py
Enter your Email Address: des@python.exe
Not a valid email server.
Der Abschnitt try/except
hilft beim Umgang mit bestimmten Ausnahmen, wenn der SMTP server
nicht existiert.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn