Heim >Backend-Entwicklung >Python-Tutorial >Wie behebe ich den Fehler „SMTP AUTH-Erweiterung wird vom Server nicht unterstützt' beim Senden von E-Mails mit Gmail und Python?

Wie behebe ich den Fehler „SMTP AUTH-Erweiterung wird vom Server nicht unterstützt' beim Senden von E-Mails mit Gmail und Python?

Susan Sarandon
Susan SarandonOriginal
2024-11-30 15:11:12757Durchsuche

How to Resolve

E-Mails mit Gmail mit Python senden

Beim Versuch, E-Mails mit der SMTP-Bibliothek von Python über Gmail zu senden, wird möglicherweise eine Fehlermeldung angezeigt, die besagt, dass SMTP AUTH wird vom Server nicht unterstützt.

Fehler Beschreibung:

Der Fehler „SMTP AUTH-Erweiterung wird vom Server nicht unterstützt“ tritt auf, wenn Sie versuchen, sich beim SMTP-Server mithilfe der login()-Methode zu authentifizieren, ohne die TLS-Verschlüsselung zu aktivieren.

Lösung mit TLS:

Um dieses Problem zu beheben, aktivieren Sie die TLS-Verschlüsselung, indem Sie diese befolgen Schritte:

import smtplib

# Enable TLS encryption
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()

Sobald TLS aktiviert ist, können Sie sich mit der login()-Methode beim Server authentifizieren.

Verwendung von Port 465 mit SSL:

Alternativ können Sie Port 465 mit SSL-Verschlüsselung verwenden. Dazu müssen Sie ein SMTP_SSL-Objekt erstellen:

import smtplib

server_ssl = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server_ssl.ehlo() # optional, called by login()
server_ssl.login(gmail_user, gmail_pwd)

Beachten Sie, dass SSL-Server keine TLS-Verschlüsselung unterstützen oder erfordern, rufen Sie daher nicht server_ssl.starttls() auf.

Beispielskript zum Senden von E-Mails:

Hier ist eine verbesserte Version des Python-Skripts, das im bereitgestellt wird Frage:

def send_email(user, pwd, recipient, subject, body):

    FROM = user
    TO = recipient if isinstance(recipient, list) else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(user, pwd)
        server.sendmail(FROM, TO, message)
        server.close()
        print('successfully sent the mail')
    except:
        print("failed to send mail")

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „SMTP AUTH-Erweiterung wird vom Server nicht unterstützt' beim Senden von E-Mails mit Gmail und Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn