2012-04-04 14 views
37

Sto cercando di inviare email da Django tramite una e-mail configurato da Google Apps, la mia configurazione al file di settings.py sembra qualcosa di simile:Come posso evitare che il server di posta di Google mi chieda di accedere tramite il browser?

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'password' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 

Quando provo per inviare una e-mail:

from django.core.mail import send_mail 

send_mail("Happy new year", "We wish you the best for 3001", 
    "[email protected]", ["[email protected]"]) 

ottengo il seguente errore:

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') 

Dal momento sto lavorando su un server remoto senza interfaccia grafica utente, posso nemmeno provare a effettuare il login dal browser.

+1

sto usando esattamente lo stesso impostazioni (tranne per l'utente/password ovviamente) e funziona per me. Stai utilizzando un indirizzo Gmail standard o è un account Google Apps con il tuo nome di dominio? Questa è l'unica cosa che mi viene in mente che potrebbe causare questo problema. E assicurati anche che le tue credenziali siano corrette. Questo è ciò che la pagina di aiuto di Google dietro al link ti dice di fare. –

+0

Sto utilizzando un account di app Google con il mio nome di dominio. In realtà ha funzionato sul mio computer di casa dopo alcuni tentativi (e accesso utilizzando il browser). Ma non riesco a farlo funzionare dal server remoto. –

+0

Hai seguito i tre controlli di google pubblicati nel tuo link di assistenza di Google? (UnlockCaptcha) – danihp

risposta

5

Configurare un tunnel ssh sul server in questione in modo che, dal proprio computer di casa, sia possibile accedere al client Web di Gmail utilizzando l'IP del server. Probabilmente hai bisogno di tunnelare la porta 80 e la porta 443, forse solo 443. Dopo aver effettuato l'accesso tramite il client web, il problema dovrebbe essere risolto in base all'articolo della Knowledge Base elencato in SMTPAuthenticationError.

Ecco un esempio di come impostare il tunnel: http://www.noah.org/wiki/SSH_tunnel#simple_port_forwarding_.28SSH_tunneling.29

+0

Sono riuscito a impostare il tunnel usando il metodo di @ DaniloBargen (grazie!). Posso effettivamente accedere all'account e-mail utilizzando il browser ma il problema persiste. La cosa veramente strana è che ho provato uno dei suggerimenti del link sopra, è andato su https://www.google.com/a/yourdomain.com/UnlockCaptcha (cambiando il dominio, ovviamente). Ma nessuna delle combinazioni nome utente/password ha funzionato. Ho inviato un'email al supporto di Google Apps in merito. –

+0

Avevo contrassegnato questa risposta come accettata perché, mentre non sono esattamente sicuro di come ho risolto il problema, questa risposta è stata decisamente utile e necessaria. È stato appena cancellato, quindi suppongo che qualcun altro lo sappia meglio. Forse avrei dovuto segnare la mia risposta dove ho spiegato la situazione come accettata? –

7

ho ottenuto la seguente risposta dal supporto di Google Apps:

You need to turn on your Outbound relay. To do this:

  1. Log into your account at google.com/a/yourdomain.com
  2. Click the Settings tab and then select Email in the left column.
  3. In the Outbound relay section, select Allow users to send mail through an external SMTP when configuring a "from" address hosted outside your domain.
  4. Click Save changes.

Hanno anche fornito un link di aiuto: http://support.google.com/a/bin/answer.py?hl=en&answer=176054

Dopo aver attivato il relay in uscita e aver utilizzato il proxy per accedere nuovamente alla webmail (grazie a @DaniloBargen e @joshcartme) il problema è stato risolto. Ho letto il link che spiega cos'è il relay in uscita e non sono sicuro del perché ne avrei bisogno (non credo di utilizzare un server SMTP esterno).

Dal momento che non sono veramente sicuro di ciò che ha risolto il problema, non contrassegnerò la risposta come accettata finché non avrò conferma.

+0

Questo problema ha iniziato a verificarsi oggi e abbiamo selezionato l'impostazione corretta in Relay in uscita. – ripper234

+5

Da quando hai aggiornato la tua risposta, penso che il processo sia cambiato. Ho avuto lo stesso errore e quello che ho fatto è stato accedere al mio account tramite il browser, quindi andare a https://accounts.google.com/DisplayUnlockCaptcha (che ho visitato da [qui] (https://support.google. it/mail/answer/14257? hl = en)) e poi inviare una mail via Django. Ora il client è riconosciuto e posso continuare a inviare mail tramite quell'indirizzo in Django. – Bentley4

-2

Nel mio caso, quando ho provato ad accedere all'account google via web, mi ha chiesto un captcha. Ho inserito il captcha e poi l'automazione ha funzionato.

5

Opzione # 1 (questo ha funzionato per me):

Dopo avere ottenuto l'errore di Please log in with your web browser and then try again. Learn more etc. quando si tenta di inviare email da mia applicazione web, ho effettuato l'accesso alla e-mail tramite il browser dal mio computer locale.

Dopo l'accesso, c'era una barra di notifica gialla in alto che mi chiedeva se volevo consentire a un'applicazione esterna di accedere alla mia posta. L'ho confermato e Google mi ha chiesto di accedere all'account dall'applicazione entro i successivi 10 minuti. Questo farà la lista bianca dell'applicazione.

Opzione # 2:

Se Option # 1doesn't lavoro per voi, provate questo: http://www.rocketideas.com/2012/05/gmail-error-password-not-accepted-from-server-solved/

+0

L'opzione 1 ha funzionato per me, grazie. Nel mio caso si trattava di un sito WordPress che utilizzava "Configura SMTP" per inviare e-mail di contatto. Google ha segnalato le "attività sospette" durante l'accesso tramite il browser e mi ha offerto l'opportunità di autorizzare l'ip/sito. Grazie per la pubblicazione! :) – crdunst

+0

L'opzione n. 2 era ciò che finalmente ha funzionato per me. – MAckerman

1

Ti hanno autenticazione a due fattori attivata per l'account applicazioni? Quindi potrebbe essere necessario utilizzare una password specifica dell'applicazione per tale applicazione.

33

Basta andare su https://accounts.google.com/DisplayUnlockCaptcha e fare clic su "continua". Questo consentirà l'accesso da altri server.

+0

Questo ha funzionato per me quando cercavo di recuperare la posta da uno script PHP. –

+0

Questo ha funzionato anche per un server JIRA per accedere a un account google. –

+0

Whoa - che mi ha permesso di inviare il mio script Python gmail. grazie! –

1

Tutto quanto sopra non aiuta nel mio caso (strano). Ma questo link potrebbe aiutare:

https://security.google.com/settings/security/activity

È possibile accedervi tramite Google Plus

  1. Apri Google+
  2. Selezionare "Protezione" dall'alto
  3. Alla voce "Attività recenti" click "Visualizza tutti gli eventi"
  4. Vedrai un elenco di "Attività insolita"
  5. Mostra "Tentativo di accesso a un'applicazione/dispositivo (impedito) Singapore" mentre sto utilizzando AWS da Singapore
  6. Fai clic su "Modifica"> "Sì, quello ero io!"
  7. Riprovare. Fatto!
29

ho pasticciano con questo per un paio d'ore all'interno di un/capibara/test selenio cetriolo - scoperto qualcosa di stupido che correggere questo errore per il bene, garantito

L'errore fin troppo familiare:

Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (Net::IMAP::NoResponseError) 

Come risulta, ci sono DUE "Consenti meno app sicure" attiva/disattiva che è necessario modificare per consentire l'accesso da dispositivi sconosciuti/IMAP.

uno qui: https://myaccount.google.com/security?pli=1#connectedapps (in fondo alla pagina)

E uno qui: https://www.google.com/settings/security/lesssecureapps

SIA DI QUESTE dimenticato da Dio PASSA bisogno di essere cambiato per liberarsi di questo messaggio di errore.

edit: da utente Milothicus (https://stackoverflow.com/users/3538026/milothicus): in myaccount.google.com, sotto 'Sign-in & Security', selezionare 'connesse applicazioni & siti'. questo ha anche un'opzione per "Consenti app meno sicure". dopo aver acceso questo, il mio server potrebbe ora inviarmi un'email automatica.

+0

Questo è stato l'unico che ha funzionato per me quando provavo a inviare email da uno script Perl su Ubuntu 16.04. –

+0

Wow! Di solito Google fa una buona interfaccia utente, ma due pulsanti di nome identico ... che casino! Grazie per la risposta. – mpb

4

etusm fornito due posizioni per accendere le applicazioni meno sicure:

One here: https://myaccount.google.com/security?pli=1#connectedapps (bottom of the page)

And one here: https://www.google.com/settings/security/lesssecureapps

entrambi sono stati accesi, ma il mio server senza testa ancora non mi potrebbe inviare una e-mail. basata sulla raccomandazione google + di JohnPang, ho trovato una terza posizione in cui ho dovuto per consentire l'accesso alle applicazioni meno sicure:

in myaccount.google.com, sotto 'Sign-in & Security', selezionare 'app connesse & siti'. questo ha anche un'opzione per "Consenti app meno sicure". dopo aver acceso questo, il mio server potrebbe ora inviarmi un'email automatica.

+0

Grazie. Ho perso il terzo, ma aggiornerò di conseguenza. -Fatto – etusm

0

A partire da ora (guardare la mia data post) c'è solo un "Consenti app meno sicure" toggle nella account admin interfaccia utente Gmail: https://myaccount.google.com/u/0/security#connectedapps

che funzionerà dal vostro computer locale (Mac o PC) dopo.

Per consentire l'accesso da Amazon EC2 (e ho il sospetto altri host Cloud-situate), c'è ancora un altro flag per impostare in battaglia senza fine di Google con gli spammer: https://accounts.google.com/b/0/DisplayUnlockCaptcha