Reputation: 1405
I have a script which sends periodically reports to a list of recipients. Everything worked fine until today 4 am, when I checked my inbox and the reports didn't come.
By debugging the code:
import smtplib
username="[email protected]"
password="my.correct.password"
server=smtplib.SMTP('smtp.gmail.com',587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(username,password)
#if login worked, it should send a message, but it is not working, so I will suppress this part
server.quit()
I receive the following (old known) result:
(250, b'smtp.gmail.com at your service, [SERVERIP]\nSIZE 35882577\n8BITMIME\nSTARTTLS\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8') (220, b'2.0.0 Ready to start TLS') (250, b'smtp.gmail.com at your service, [SERVERIP]\nSIZE 35882577\n8BITMIME\nAUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8') Traceback (most recent call last): File "<pyshell#52>", line 6, in server.login(username,password) File "C:\Python\Python36\lib\smtplib.py", line 729, in login raise last_exception File "C:\Python\Python36\lib\smtplib.py", line 720, in login initial_response_ok=initial_response_ok) File "C:\Python\Python36\lib\smtplib.py", line 641, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbu5\n5.7.14 wJL_YP3XLTGPzP_UBwtyCHhzHE1y1G8R0iHaz_pxG9fBH4CePmbXuAE1qH8HvnXTgqcmKi\n5.7.14 P23_lJoZX_pfbNUOxQp4Fr2VhgbAjnlu3ZL_pcjVBd-TTMUVCAah6Q2-Vq5Dffm9s4UWwl\n5.7.14 J7V7CjE06eHkw1IlphV4lLbRKVp9Hk7vC92zLQ5zM27cbQiTM8W3lEgm> Please log\n5.7.14 in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 r131sm2964505vkr.40 - gsmtp')
Things I've tried
Allow less secure apps (as indicated in https://www.google.com/settings/security/lesssecureapps): This flag was set to true since I created the account.
Disable Captcha (as indicated in https://accounts.google.com/DisplayUnlockCaptcha): Visited this URL several times. No luck.
Login via browser: It works fine, when logging via any Internet Browser from any computer, although in the first times I had to insert a code sent to the account's recovery phone.
I came across other things I could try, but I am not sure it could work:
I will probably try oauth2, however it would require a change in my code, which I want to avoid due to some restrictions in the server.
Upvotes: 13
Views: 25272
Reputation: 399
If you are signed in with multiple accounts on the same device you do not have to sign out of your accounts for performing these steps.
All you need to do is to open a private window, paste the following URL: https://accounts.google.com/b/0/DisplayUnlockCaptcha into your browser's private window. And you will be redirected to your Gmail sign-in page. put your account email in the given field and then press next and enter the password. The link will direct you to the captcha page and click on continue. Make sure you don't close the tab after unlocking the captcha and run your script. You don't have to always unlock captcha if this works for the first time.
Upvotes: 0
Reputation: 3453
In my case, I was using the account from a server in the cloud which I was accessing via SSH. I have to make an SSH tunnel to access from my local browser to the corresponding Google URL as I was accessing it from the SSH terminal:
ssh -D 9090 -C -N user@server-url
127.0.0.1
and port to 9090
:Upvotes: 3
Reputation: 1
Just click "Yes, it was me", then turn off "Less secure app accses."
Upvotes: 0
Reputation: 408
The solution to this seems to be:
Doing this should unlock the account, though it can take up to an hour to take effect.
Upvotes: 9
Reputation: 21
If you have signed in with multiple accounts on the same device you would have to sign out from all your accounts and copy and paste this https://accounts.google.com/b/0/DisplayUnlockCaptcha in your url. You will be directed to your gmail sign in page.Choose the account you used in the script, enter your username and password. The link will direct you to the captcha page and click on continue. Make sure you don't close the tab after unlocking captcha and run your script. You don't have to always unlock captcha if this works for the first time.
Upvotes: 2
Reputation: 59
Even i had this issue just try to do these steps because google initially blocks connection without any reason:
try to turn on and off Less secure app access.
log out to your account and login again
Change your password and hit your script and at last print acknowledgment like below:
print('Your message has been sent!!')
if this doesn't work please login after 24 hour this will definitely work!!
Upvotes: 1
Reputation: 741
Try changing the password of the email and re-run the script with the new password. This worked for me. You probably have received a Sign-in attempt email and make sure you verify the login your script made.
Upvotes: 1
Reputation: 3696
I recently got this problem. I've been using the same script for 3+ years and it suddenly stopped working. The above solutions didn't work for me. After contacting google here's what solved the issue (note it can take a few hours for the changes to propagate - up to 24 hours but usually not that long)
ALLOW low secure apps in Google settings (no effect on own but may be related to the full solution)
Try the unlock captcha link: https://accounts.google.com/DisplayUnlockCaptcha (no effect on its own but may be related to the full solution)
Admin Console > Apps > G Suite > Gmail > User Settings > Confidential Mode --> DISABLE Confidential Mode
Admin Console > Apps > G Suite > Gmail > End User Access --> TURN ON "Allow per-user outbound gateways"
Upvotes: 17
Reputation: 1765
I had this issue as well. My mail forwarder script that has been working fine for 6+ months randomly started throwing this error:
534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbts\n5.7.14 y2ku2-8KrWsn_dAUhnkssuTuESwaeG-DNn9hWBpsSpJCmVL ZhH24jzJfd-5bHUdh993dJ7\n5.7.14 a5LsAOJrheyT0cRXIhMSbycqvMAC7sNrizO5qU_6iDescJcQa-QqUUCFVH7IZoWF9uXyrv\n5.7.14 HC9XzAW-pBwgUjV4i_ts8CNhB_yZf2JHOi-wl6gZ9jwAiYLWx DPe7epI> Please log\n5.7.14 in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 y5sm3059043 9pge.49 - gsmtp
After some research I tried all the following steps:
Nothing seemed to actually work at first. However, after doing all the above steps, the script started working again ~24 hours later without any modifications.
Upvotes: 12
Reputation: 1405
I have solved this using the Google Gmail API. It seems Google has either blocked or limited logins for my account through unknown devices, as I could login only via the browser and after I confirmed the telephone number and an code sent by SMS.
So I decided to give up using smtplib and implemented the access using the API Google uses for Gmail: https://developers.google.com/api-client-library/python/ https://developers.google.com/gmail/api/guides/sending
Hope this helps other who had trouble with this issue.
Upvotes: 9