web-dev-qa-db-fra.com

Les informations de connexion ne fonctionnent pas avec Gmail SMTP

J'essaie d'envoyer un e-mail en Python, via Gmail. Voici mon code:

import smtplib


fromaddr = '......................'  
toaddrs  = '......................'  
msg = 'Spam email Test'  

username = '.......'  
password = '.......'

server = smtplib.SMTP('smtp.gmail.com', 587)  
server.ehlo()
server.starttls()
server.login(username, password)  
server.sendmail(fromaddr, toaddrs, msg)  
server.quit()

Je reçois l'erreur:

Traceback (most recent call last):
  File "email_send.py", line 18, in <module>
    server.login(username, password)
  File "C:\.....\Python\lib\smtplib.py", line 633
, in login
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepte
d. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=1425
7\n5.7.8 {BADCREDENTIALS} s10sm9426107qam.7 - gsmtp')

Cela semble être un problème avec la connexion. Je suis certain que mes informations de connexion sont correctes, sauf pour une chose. Le nom d'utilisateur doit-il être "[email protected]", ou simplement "blah"? J'ai essayé les deux, même erreur.

Une idée qui ne va pas?

NOTE: toutes les périodes sont au lieu de mot de passe/email/chemins de fichier/etc.

21
Jacob Kudria

J'ai rencontré un problème similaire et suis tombé sur cette question. J'ai reçu une erreur d'authentification SMTP mais mon nom d'utilisateur/mot de passe était correct. Voici ce qui l'a corrigé. J'ai lu ceci:

https://support.google.com/accounts/answer/6010255

En un mot, Google ne vous permet pas de vous connecter via smtplib car il a marqué ce type de connexion comme "moins sécurisé", donc ce que vous avez à faire est d'aller sur ce lien pendant que vous êtes connecté à votre compte Google, et permettre l'accès:

https://www.google.com/settings/security/lesssecureapps

Une fois cela réglé (voir ma capture d'écran ci-dessous), cela devrait fonctionner.

Less Secure Apps

La connexion fonctionne maintenant:

smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login('[email protected]', 'me_pass')

Réponse après changement:

(235, '2.7.0 Accepted')

Réponse préalable:

smtplib.SMTPAuthenticationError: (535, '5.7.8 Username and Password not accepted. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 g66sm2224117qgf.37 - gsmtp')

Vous ne travaillez toujours pas? Si vous obtenez toujours le SMTPAuthenticationError mais maintenant le code est 534, c'est parce que l'emplacement est inconnu. Suivez ce lien:

https://accounts.google.com/DisplayUnlockCaptcha

Cliquez sur Continuer et cela devrait vous donner 10 minutes pour enregistrer votre nouvelle application. Continuez donc à faire une autre tentative de connexion maintenant et cela devrait fonctionner.

Cela ne semble pas fonctionner immédiatement, vous pouvez être bloqué pendant un certain temps en obtenant cette erreur dans smptlib:

235 == 'Authentication successful'
503 == 'Error: already authenticated'

Le message indique d'utiliser le navigateur pour se connecter:

SMTPAuthenticationError: (534, '5.7.9 Please log in with your web browser and then try again. Learn more at\n5.7.9 https://support.google.com/mail/bin/answer.py?answer=78754 qo11sm4014232igb.17 - gsmtp')

Après avoir activé 'lesssecureapps', allez prendre un café, revenez et essayez à nouveau le lien 'DisplayUnlockCaptcha'. D'après l'expérience utilisateur, le changement peut prendre jusqu'à une heure. Puis essayez à nouveau de vous connecter.

[~ # ~] mise à jour [~ # ~] :: Voir ma réponse ici: Comment envoyer un e-mail avec Gmail en tant que fournisseur en utilisant Python?

54
radtek

J'ai eu le même problème. L'erreur d'authentification peut être due à vos paramètres de sécurité, la vérification en 2 étapes par exemple. Il ne permettra pas aux applications tierces de remplacer l'authentification.

Connectez-vous à votre compte Google et utilisez ces liens:

Étape 1 [Lien de désactivation de la vérification en 2 étapes]:

https://myaccount.google.com/security?utm_source=OGB&utm_medium=act#signin

Étape 2: [Lien pour autoriser les applications moins sécurisées]

https://myaccount.google.com/u/1/lesssecureapps?pli=1&pageId=none

Ça devrait être bien maintenant.

9
Rahul Shenoy

Si vous activez la vérification en deux étapes, vous devez générer un mot de passe d'application spécial au lieu d'utiliser votre mot de passe commun. https://myaccount.google.com/security#signin

2
northcamel

J'ai eu le même problème. Et je le corrige en créant un mot de passe d'application pour l'application de messagerie électronique sur Mac. Vous pouvez le trouver sur mon compte -> Sécurité -> Connexion à Google -> Mots de passe d'application. ci-dessous est le lien pour cela. https://myaccount.google.com/apppasswords?utm_source=google-account&utm_medium=web

1
Leo_Liu_MJ