如何用 Python 发送电子邮件?给初学者的简单讲解
tgcf
背景
发送电子邮件是现代生活中最常见的功能之一。本文并非讨论电子邮件的底层工作原理,而是介绍如何使用 Python 脚本轻松发送电子邮件。
如果可以使用 Gmail,为什么还要使用 Python 来发送电子邮件?
- 当你知道如何用 Python 发送电子邮件时,你可以自动执行很多无聊的事情
- 您还可以将电子邮件功能与其他应用程序集成
- 免费发送您的新闻通讯
并且用例无穷无尽。
要求
要遵循本教程,您的系统中必须安装 Python 3.6 及以上版本。在我撰写本文时,我建议使用 Python 3.9.3(最新稳定版本)。
打开你的终端(在 Windows 中也称为命令提示符),然后输入python --version
,你应该得到类似这样的内容。
❯ python --version
Python 3.9.0+
您还需要运行一个电子邮件服务器。本文不会深入探讨幕后技术。如果您拥有 Gmail 帐户(或任何其他电子邮件提供商的帐户),那么就可以开始了。
介绍smtplib
简单邮件传输协议 (SMTP) 是用于电子邮件传输的互联网标准通信协议。邮件服务器和其他邮件传输代理使用 SMTP 来发送和接收邮件。
Python 提供了smptplib,这是一个用于向任何具有 SMTP 或 ESMTP 监听守护进程的 Internet 机器发送邮件的库。
作为smtplib
Python 标准库的一部分,您无需安装任何东西即可开始使用它。
Python 提供了另一个标准库,用于email
基本的电子邮件相关操作。
发送简单的电子邮件
因此,首先让我们导入smptplib
已经为我们完成所有繁重工作的内容。
from smtplib import SMTP
现在我们需要定义一些重要的变量来开始。
HOST = 'smtp.gmail.com'
# use the smtp server address of your mail provider
PORT = 587
# this if for TLS,
# will discuss more about this in a future article
SENDER = 'youremail@gmail.com'
PASSWORD = 'your12434(893**!@password'
# don't share this script with anyone 🤫
# for building real applications
# always read secrets from environment variables
现在我们已经定义了所需的变量,让我们继续启动与邮件服务器的连接并使用我们的凭据登录。
server = SMTP(host=HOST, port=PORT)
# create an SMTP server object
server.connect(host=HOST, port=PORT)
# connect
server.ehlo()
# extended hello; like saying hello
server.starttls()
server.ehlo()
server.login(user=SENDER, password=PASSWORD)
# login with your credentials
所有糟糕的事情都结束了,现在是时候发送电子邮件了。
在我们这样做之前,我们需要获得收件人的电子邮件地址以及我们想要发送给他们的消息。
RECIPIENT = 'email@example.com'
MESSAGE = '''
Hi! How are you?
This is my first email sent from Python.
Hope to see you soon.
'''
最后,再添加一行即可将电子邮件发送到目的地。
server.sendmail(SENDER,RECIPIENT,MESSAGE)
就这样,我们完成了。😀
被动地阅读教程对你没有好处。将脚本写入名为的文件中send.py
并运行它。
❯ python send.py
如果一切顺利,那么终端中将不会有输出,并且您将看到电子邮件位于收件人的收件箱中。
在本系列的后续文章中,我们将对脚本进行一些增强,以便我们可以发送富文本电子邮件并在电子邮件中附加文件。
链接:https://dev.to/aahnik/how-to-send-emails-with-python-simply-explained-for-beginners-hea