Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send mail with Python

I am trying to send a simple mail with python

import smtplib

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

msg = "Hello world"
server.sendmail("[email protected]", "[email protected]", msg)
server.quit()

But I get this err:

server.login("[email protected]", "psw")

File "C:\Python\lib\smtplib.py", line 652, in login

raise SMTPAuthenticationError(code, resp)

smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbuxb\n5.7.14 4i2u8qU8V3jgf6uGv8da1RAGPJyctRvIFy_kjai6aKVx_B6qVhoz_dzFpvfPC18H-jeM6K\n5.7.14 cnm2HVuq-wr-uw59hD31ms-cxMmnZuq6Z3_liDaDmu8_UqaiUwR4FUiuX2i5pPdQjJzFvv\n5.7.14 4VrEF5XT4ol2iN17gnB_jITpwzsjH9Ox3NCNcfl7SriHr5m7esc15PWI0CG_2CTlyh7RxW\n5.7.14 XhoJPajs8GMd-khOQWUqucywfrfo> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 ef10sm13614207wjd.49 - gsmtp')

What should I do?

Thanks

like image 568
Yura Avatar asked May 30 '15 17:05

Yura


People also ask

How do I send an email using Python?

Use Python's built-in smtplib library to send basic emails. Send emails with HTML content and attachments using the email package. Send multiple personalized emails using a CSV file with contact data. Use the Yagmail package to send email through your Gmail account using only a few lines of code.

How do I send an email using Python 3?

To send the mail you use smtpObj to connect to the SMTP server on the local machine. Then use the sendmail method along with the message, the from address, and the destination address as parameters (even though the from and to addresses are within the e-mail itself, these are not always used to route the mail).


2 Answers

It seems as if you require something that Google calls an app password.

Basically, you generate a 16 digit password, which is unique to your app. You enter this specific password in the python program, instead of the password you regularly use to log into your Google account.

This allows you to still enjoy the benefits of 2-step verification while also being able to use third party applications, such as your own python program.

Here are the instructions from Google on how to generate such an app password: https://support.google.com/accounts/answer/185833?hl=en

like image 100
Wilhelm Klopp Avatar answered Oct 15 '22 11:10

Wilhelm Klopp


you can use this code:

import smtplib

session = smtplib.SMTP('smtp.gmail.com', 587)
session.ehlo()
session.starttls()
session.login('[email protected]',' password')
headers = "\r\n".join(["from: " + '[email protected]',
                       "subject: " + "test",
                       "to: " + '[email protected]',
                       "mime-version: 1.0",
                       "content-type: text/html"])

# body_of_email can be plaintext or html!                    
content = headers + "\r\n\r\n" + "body_of_email"
session.sendmail('[email protected]', '[email protected]', content)

just remember if your email is gmail after first run you get an error. after that you should login to your email account and approve access to your account from another app ( you will receive a messege after login)

like image 3
Sara Santana Avatar answered Oct 15 '22 11:10

Sara Santana