【问题标题】:How can I send email from python with 2 Factor Authentication?如何使用 2 因素身份验证从 python 发送电子邮件?
【发布时间】:2020-12-27 10:18:38
【问题描述】:

我创建了 python 文件,可以使用打开的不太安全的应用程序发送电子邮件,但我需要关闭它。如何使用 2FA 发送电子邮件?

# import simple mail transfer protocol library
import smtplib 

# import EmailMessage method
from email.message import EmailMessage

contacts = ['<email@email.com>', '<email2@email.com>']
EMAIL_ADDRESS = '<my_gmail>'
EMAIL_PASSWORD = '<my_gmail_password>'

# Create empty Email Message object
msg = EmailMessage()
msg['Subject'] = 'Automated python email sender 5'
msg['From'] = EMAIL_ADDRESS
msg['To'] = contacts
msg.set_content('<sample_content>')

# contact manager we will make sure our connection is closed automatically without us doing it manually
# 465 is the port number for plain SMTP_SSL
# SMTP_SSL means you do not have to use ehlo() ans starttls()
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:

  smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
  smtp.send_message(msg)

我应该添加什么才能使 2FA 正常工作?

【问题讨论】:

  • 我不知道它如何与 2FA 一起工作,但目前在 GMail 中,每个应用程序都必须使用您必须在 Google API 页面中生成的自己的登录名和密码。
  • 我会看看的,谢谢你的回复

标签: python email smtp gmail google-2fa


【解决方案1】:

我认为您需要设置应用密码,以便您从不支持两步验证的设备上的应用登录您的 Google 帐户。 Learn more

它基本上是在用户 Google 帐户中设置的。

另一件事是Display captcha

如果这不起作用,您可能需要查看Xoauth2

如果您需要 2fa

如果您想支持 2fa,那么您不应该使用 SMTP 服务器,而应该通过 Gmail API 并使用 Oauth2,这将提示用户通过他们的 google 帐户进行连接,而 google 将自行控制 2fa。 SMTP 服务器不是为处理 2fa 而设计的

【讨论】:

  • 如果你想支持 2fa,那么你不应该使用 SMTP 服务器,而应该通过 Gmail API 并使用 Oauth2,这将提示用户通过他们的谷歌帐户进行连接,谷歌将控制2fa 自己。
  • 感谢这个想法。我将尝试创建使用 gmail API 和 Oauth2 而不是 SMTP 的 python。谢谢
  • 您应该检查使用 gmail 范围验证应用程序的成本。这可能是一个非常耗时且昂贵的过程,在为您的新应用编制预算时应考虑到这一点。
  • 我不知道它会花很多钱。我真的开始创建 python 文件,它从头开始发送使用 2FA 的电子邮件,并且真的有 0 到不知道我正在做的事情是否有效。我希望有这方面的文档。感谢您的评论
  • support.google.com/cloud/answer/7454865?hl=en 有很多关于它的文档。如果您打算让其他人使用它而不仅仅是供您使用,那么您真的应该检查一下它会花费您多少。
猜你喜欢
  • 2021-10-18
  • 2014-12-31
  • 2019-08-29
  • 2017-09-07
  • 1970-01-01
  • 2011-06-18
  • 2015-11-23
  • 1970-01-01
  • 2018-08-07
相关资源
最近更新 更多