Maison > développement back-end > Tutoriel Python > Comment résoudre les erreurs « Extension SMTP AUTH non prise en charge par le serveur » lors de l'envoi d'e-mails avec Gmail et Python ?

Comment résoudre les erreurs « Extension SMTP AUTH non prise en charge par le serveur » lors de l'envoi d'e-mails avec Gmail et Python ?

Susan Sarandon
Libérer: 2024-11-30 15:11:12
original
747 Les gens l'ont consulté

How to Resolve

Envoi d'e-mails avec Gmail à l'aide de Python

Lorsque vous essayez d'envoyer des e-mails à l'aide de la bibliothèque SMTP de Python via Gmail, vous pouvez rencontrer une erreur indiquant que SMTP AUTH n'est pas pris en charge par le serveur.

Erreur Description :

L'erreur « Extension SMTP AUTH non prise en charge par le serveur » se produit lorsque vous essayez de vous authentifier auprès du serveur SMTP à l'aide de la méthode login() sans activer le cryptage TLS.

Résolution à l'aide de TLS :

Pour résoudre ce problème, activez le cryptage TLS en suivant ces instructions étapes :

import smtplib

# Enable TLS encryption
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
Copier après la connexion

Une fois TLS activé, vous pouvez vous authentifier auprès du serveur à l'aide de la méthode login().

Utilisation du port 465 avec SSL :

Vous pouvez également utiliser le port 465 avec cryptage SSL. Pour cela, vous devez créer un objet SMTP_SSL :

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)
Copier après la connexion

Notez que les serveurs SSL ne prennent pas en charge ou n'exigent pas le cryptage TLS, n'appelez donc pas server_ssl.starttls().

Exemple de script pour l'envoi d'e-mails :

Voici une version améliorée du script Python fourni dans le question :

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")
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal