用 Python 发送电子邮件

Najwa Riyaz 2021年10月12日
用 Python 发送电子邮件

要使用 Python 发送电子邮件,请使用 smtplib 库中的以下函数。

  • SMTP(SMTP_SERVER, SMTP_PORT) - 根据 SMTP 服务器和 SMTP 端口详细信息创建 SMTP 会话。
  • starttls() - 为安全设置启动 TLS。
  • login(SMTP_USERNAME, SMTP_PASSWORD) - 用于提供电子邮件发件人的身份验证详细信息。
  • sendmail(EMAIL_FROM, EMAIL_TO, the_message) - 将消息从发送方发送到接收方。
  • quit() 退出 SMTP 会话。

这是一个演示通过 Gmail SMTP 服务器发送邮件的示例。

import smtplib

SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
SMTP_USERNAME = "sender_username_here@gmail.com"
SMTP_PASSWORD = "sender_password_here"
EMAIL_FROM = "sender_username_here@gmail.com"
EMAIL_TO = "receiver_username_here@gmail.com"
EMAIL_SUBJECT = "Attention:Subject here"
EMAIL_MESSAGE = "The message here"

s = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
s.starttls()
s.login(SMTP_USERNAME, SMTP_PASSWORD)
message = "Subject: {}\n\n{}".format(EMAIL_SUBJECT, EMAIL_MESSAGE)
s.sendmail(EMAIL_FROM, EMAIL_TO, message)
s.quit()

根据系统中该点建立的连接,输出可能如下所示 -

(221, b"2.0.0 closing connection t12sm4676768pfc.133 - gsmtp")

结果,发送了电子邮件。接收方成功接收消息。

笔记:

  • 如果是 Gmail,请提供以下 SMTP 详细信息:
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587

此外,在执行代码之前,需要在 Gmail 中启用以下设置。

https://myaccount.google.com/lesssecureapps
  • 如果是 Yahoo Mail,请提供以下 SMTP 详细信息:
SMTP_SERVER = "smtp.mail.yahoo.com"
SMTP_PORT = 587

此外,在执行代码之前生成雅虎应用程序密码。参考下面的链接。

https://help.yahoo.com/kb/generate-separate-password-sln15241.html

  • 同样,如果你希望使用任何其他邮件提供商,请使用其各自的 SMTP 服务器详细信息和先决条件。