Tuesday, November 27, 2018

How to send an email with Gmail as provider using Python?



I am trying to send email (Gmail) using python, but I am getting following error.



Traceback (most recent call last):  
File "emailSend.py", line 14, in
server.login(username,password)
File "/usr/lib/python2.5/smtplib.py", line 554, in login

raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.


The Python script is the following.



import smtplib
fromaddr = 'user_me@gmail.com'
toaddrs = 'user_you@gmail.com'
msg = 'Why,Oh why!'

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

Answer



You need to say EHLO before just running straight into STARTTLS:




server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()





Also you should really create From:, To: and Subject: message headers, separated from the message body by a blank line and use CRLF as EOL markers.




E.g.



msg = "\r\n".join([
"From: user_me@gmail.com",
"To: user_you@gmail.com",
"Subject: Just a message",
"",
"Why, oh why"
])


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...