python - 如何使用 2 因素身份验证从 python 发送电子邮件?

标签 python email smtp gmail google-2fa

我已经创建了 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 正常工作?

最佳答案

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

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

要看的另一件事是 Display captcha

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

如果你需要2fa

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

关于python - 如何使用 2 因素身份验证从 python 发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63803904/

相关文章:

c# - SMTP 在 C# 中中继?

python - 如何在循环中更新 SQL Alchemy 中的记录

javascript - onclick on 按钮 Outlook 电子邮件应使用 Javascript 或使用 anchor 标记打开

python - 增加 Seaborn 联合图中的文本大小

asp.net - 使用 ASP .Net 和 Gmail SMTP 发送电子邮件

php - CodeIgniter: stream socket enable crypto SSL/TLS already set up for this stream 警告

java - SMTP发送失败异常 590

python - 如何使用 python 和 smtplib 阅读电子邮件

python - 为什么具有正确 header 的 requests.get 返回空内容?

python - 属性错误: 'WordNetCorpusReader' object has no attribute 'get_synsets_from_word'