使用 python 发送电子邮件。 Google 禁用安全性较低的应用

Sending email with python. Google disables less secure apps

我正在尝试使用 python 发送电子邮件。在 Google 禁用 'less secure apps' 之前,我的代码运行良好。我的电子邮件地址和密码都是正确的。

server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
serverEmail = "EMAILADDRESS"
serverPw = "QWERTY"
server.login(serverEmail, serverPw)
subject = "Rejection"
body = "Hi! You've been unfortunately declined access to our system."
message = f'Subject: {subject}\n\n{body}'
server.sendmail("EMAILADDRESS", doctorEmail['email'], message)
server.quit()

我现在收到这个错误:

smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted.

我在使用 server.starttls() 时遇到此错误:

smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.

这对我有用。您需要为此生成应用密码。参见 https://support.google.com/accounts/answer/185833?hl=en

import smtplib as smtp

connection = smtp.SMTP_SSL('smtp.gmail.com', 465)
    
email_addr = 'my_email@gmail.com'
email_passwd = 'app_password_generated_in_Google_Account_Settings'
connection.login(email_addr, email_passwd)
connection.sendmail(from_addr=email_addr, to_addrs='recipient@something.com', msg="Sent from my IDE. Hehe")
connection.close()

出于某种原因,我的所有电子邮件最终都在收件人帐户的垃圾邮件文件夹中。

Google 在 6 月 2 日一度禁止 'less secure apps' 访问,但在美国东部时间晚上 7 点左右他们 re-enabled 它。因此,如果您只是等待几个小时,则无需执行任何操作。

我怀疑他们以某种方式被 'law of unintended consequences' 击中了,但如果他们在某个时候再次关闭此访问权限,我也不会感到惊讶。