J'essaie d'envoyer des e-mails de Django à l'aide d'un e-mail configuré par Google Apps. Ma configuration dans le fichier settings.py
ressemble à ceci:
EMAIL_Host = 'smtp.gmail.com'
EMAIL_Host_USER = '[email protected]'
EMAIL_Host_PASSWORD = 'password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
Quand j'essaye d'envoyer un email en utilisant:
from Django.core.mail import send_mail
send_mail("Happy new year", "We wish you the best for 3001",
"[email protected]", ["[email protected]"])
Je reçois l'erreur suivante:
SMTPAuthenticationError:
(535, '5.7.1 Please log in with your web browser and then try again.
Learn more at
5.7.1 https://support.google.com/mail/bin/answer.py?answer=78754 k2sm758604obl.14')
Comme je travaille sur un serveur distant sans interface graphique, je ne peux même pas essayer de me connecter à partir du navigateur.
Allez simplement sur https://accounts.google.com/DisplayUnlockCaptcha Et cliquez sur "Continuer". Cela va permettre l'accès depuis d'autres serveurs.
Cela fait deux heures que je m'amuse à cela dans le cadre d'un test concombre/capybara/sélénium - j'ai découvert quelque chose de stupide qui corrigera cette erreur pour de bon, c'est garanti.
L'erreur trop familière:
Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (Net::IMAP::NoResponseError)
Il s'avère que il existe DEUX "Autoriser les applications moins sécurisées" qui doivent être modifiées pour permettre la connexion à partir de périphériques/IMAP inconnus.
One here: https://myaccount.google.com/security?pli=1#connectedapps (bas de la page)
Et un ici: https://www.google.com/settings/security/lesssecureapps
CES DEUX GODFORSAKEN TOGGLES doivent être modifiés pour supprimer ce message d'erreur.
modifier: à partir de l'utilisateur Milothicus ( https://stackoverflow.com/users/3538026/milothicus ): dans myaccount.google.com, sous "Connexion et sécurité", sélectionnez "Applications et sites connectés". cela a également une option pour «Autoriser les applications moins sécurisées». après avoir allumé celui-ci, mon serveur pouvait maintenant m'envoyer un email automatisé.
J'ai reçu la réponse suivante du support technique de Google Apps:
Vous devez activer votre relais sortant. Pour faire ça:
- Connectez-vous à votre compte à l'adresse google.com/a/votredomaine.com.
- Cliquez sur l'onglet Paramètres, puis sélectionnez Email dans la colonne de gauche.
- Dans la section Relais sortant, sélectionnez Autoriser les utilisateurs à envoyer du courrier via un serveur SMTP externe lors de la configuration d'une adresse "à partir de" hébergée en dehors de votre domaine.
- Cliquez sur Enregistrer les modifications.
Ils ont également fourni un lien d'aide: http://support.google.com/a/bin/answer.py?hl=fr&answer=176054
Après avoir activé le relais sortant et utilisé le proxy pour vous connecter une nouvelle fois au Webmail (grâce à @DaniloBargen et @joshcartme), le problème a été résolu. J'ai lu le lien expliquant ce qu'est le relais sortant et je ne sais pas vraiment pourquoi j'en aurais besoin (je ne crois pas que j'utilise un serveur SMTP externe).
Étant donné que je ne suis pas vraiment sûr que ce soit la solution du problème, je ne marquerai pas la réponse comme acceptée tant que je n'aurai pas obtenu confirmation.
Configurez un tunnel ssh sur le serveur en question de sorte que vous puissiez, à partir de votre ordinateur personnel, vous connecter au client Web gmail à l'aide de l'IP du serveur. Vous avez probablement besoin de tunneliser les ports 80 et 443, peut-être seulement 443. Une fois connecté via le client Web, le problème devrait disparaître conformément à l'article de la base de connaissances répertorié dans SMTPAuthenticationError.
Voici un exemple de configuration du tunnel: http://www.noah.org/wiki/SSH_tunnel#simple_port_forwarding_.28SSH_tunneling.29
Option n ° 1 (cela a fonctionné pour moi):
Après avoir reçu l'erreur Please log in with your web browser and then try again. Learn more etc.
lors de la tentative d'envoi d'un courrier électronique à partir de mon application Web, je me suis connecté à ce courrier via le navigateur à partir de mon ordinateur local.
Une fois connecté, il y avait une barre de notification jaune en haut qui me demandait si je souhaitais autoriser les applications externes à accéder à mon courrier. Je l'ai confirmé et Google m'a demandé de me connecter au compte depuis l'application dans les 10 prochaines minutes. Cela mettra la liste blanche de l'application.
Option 2:
Si l'option n ° 1 ne fonctionne pas pour vous, essayez ceci: http://www.rocketideas.com/2012/05/gmail-error-password-not-accepted-from-server-solved/
etusm a fourni deux emplacements pour activer des applications moins sécurisées:
Une ici: https://myaccount.google.com/security?pli=1#connectedapps (bas de la page)
Et un ici: https://www.google.com/settings/security/lesssecureapps
les deux étaient allumés, mais mon serveur sans tête ne pouvait toujours pas m'envoyer un email. Sur la base de la recommandation Google + de JohnPang, j'ai trouvé un troisième emplacement où je devais autoriser l'accès à des applications moins sécurisées:
dans myaccount.google.com, sous "Connexion et sécurité", sélectionnez "Applications et sites connectés". cela a également une option pour «Autoriser les applications moins sécurisées». après avoir allumé celui-ci, mon serveur pouvait maintenant m'envoyer un email automatisé.
J'ai trouvé la solution sur: https://support.google.com/accounts/answer/185833?hl=fr et enfin https://security.google.com/settings/security/apppasswords
Si vous testez votre projet sur une machine locale, vous devez vous rendre sur ce dernier lien et activer "Accéder à des applications moins sécurisées".
Tout ce qui précède n'aide pas dans mon cas (bizarre). Mais ce lien pourrait vous aider:
https://security.google.com/settings/security/activity
Vous pouvez y accéder via Google Plus
Avez-vous une authentification à deux facteurs activée pour le compte apps? Ensuite, vous devrez peut-être utiliser un mot de passe spécifique à cette application.
Pour l'instant (regardez ma date de publication), il n'y a qu'une seule bascule "Autoriser les applications moins sécurisées" dans l'interface utilisateur de l'administrateur du compte Gmail: https://myaccount.google.com/u/0/security#connectedapps
Cela fonctionnera à partir de votre ordinateur local (Mac ou PC) après cela.
Pour autoriser l'accès depuis Amazon EC2 (et je suppose que d'autres hôtes situés dans le cloud), il existe un autre indicateur à définir dans la bataille sans fin de Google contre les spammeurs: https://accounts.google.com/b/0/DisplayUnlockCaptcha