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()
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)
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")
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!