下面是详细讲解“Python实现自动化发送邮件”的完整攻略。
Python实现自动化发送邮件
介绍
Python 是一种高级编程语言,而邮件是我们日常生活和工作中经常使用的通讯方式之一。Python 常用的邮件发送库有 smtplib、email、yagmail 等。它们都能够实现自动化发送邮件。通过这些库,我们可以简单地编写一段代码,实现自动化发送邮件的功能。
准备工作
首先,我们需要确保在本地或远程服务器上已安装 Python,如果没有,可以前往 Python 的官方网站(https://www.python.org/)下载并安装。Linux 环境下,也可以使用自带的 Python 版本;另外需要安装邮件发送库 smtplib。
实例1:使用 Python 发送简单邮件
下面我们使用 Python 的 smtplib 库来实现简单邮件的自动化发送:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender = 'sender@example.com' # 发件人邮箱账号
my_pass = 'password' # 发件人邮箱密码(当然要替换为自己的密码)
my_user = 'user@example.com' # 收件人邮箱账号,多个收件人直接写成列表形式
def mail():
ret = True
try:
msg = MIMEText('Python 实现自动化发送邮件', 'plain', 'utf-8')
msg['From'] = formataddr(["发件人名字", my_sender])
msg['To'] = formataddr(["收件人名字", my_user])
msg['Subject'] = "Python SMTP 邮件测试"
server = smtplib.SMTP_SSL("smtp.exmail.qq.com", 465) # 发送邮件服务器及端口号(根据具体情况替换)
server.login(my_sender, my_pass) # 发件人邮箱账号及密码
server.sendmail(my_sender, [my_user,], msg.as_string()) # 发送邮件内容
server.quit() # 退出连接
except Exception as e:
ret = False
return ret
if __name__ == "__main__":
ret = mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
上述代码实现的是一个简单的邮件自动发送功能,主要包括以下几个步骤:
- 引入 smtplib 库和邮件相关的 MIMEText 和 formataddr 模块。
- 设置必要的邮箱信息,包括发件人账号和密码、收件人账号及邮箱内容。
- 使用 smtplib 的 SMTP_SSL() 方法建立连接并通过 login() 方法登录并验证邮箱信息。
- 通过 sendmail() 方法实现邮件的发送,当然可以向多个收件人发送邮件,需要将收件人邮箱地址存储为列表的形式。
实例2:实现附件发送
现在我们进一步完善自动化发送邮件的功能,实现包含附件的邮件自动发送。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.utils import formataddr
my_sender = 'sender@example.com' # 发件人邮箱账号
my_pass = 'password' # 发件人邮箱密码(当然要替换为自己的密码)
my_user = 'user@example.com' # 收件人邮箱账号,多个收件人直接写成列表形式
def mail():
ret = True
try:
msg = MIMEMultipart() # 构建邮件头,可以支持 HTML 格式和附件的邮件
msg['From'] = formataddr(["发件人名字", my_sender])
msg['To'] = formataddr(["收件人名字", my_user])
msg['Subject'] = "Python SMTP 邮件测试"
# 文本内容
text = MIMEText('Python 实现自动化发送邮件,并携带附件。', 'plain', 'utf-8')
msg.attach(text)
with open(r'filename.zip', 'rb') as f:
# 应用二进制方式读取附件内容并作为 MIME 格式的应用对象
application = MIMEApplication(f.read(), Name="filename.zip")
application.add_header('Content-Disposition', 'attachment', filename='filename.zip')
msg.attach(application)
server = smtplib.SMTP_SSL("smtp.exmail.qq.com", 465) # 发送邮件服务器及端口号(根据具体情况替换)
server.login(my_sender, my_pass) # 发件人邮箱账号及密码
server.sendmail(my_sender, [my_user,], msg.as_string()) # 发送邮件内容
server.quit() # 退出连接
except Exception as e:
ret = False
return ret
if __name__ == "__main__":
ret = mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
具体的代码实现过程如下:
- 构建 MIMEMultipart 对象,并将其作为 msg 的初始化参数,用以支持附件发送。
- 设置必要的邮箱信息,包括发件人账号和密码、收件人账号及邮箱内容。
- 使用 MIMEText 类构建邮件文本内容,并使用 msg.attach() 方法将其与 msg 对象关联起来。
- 按照二进制方式读取附件内容,构建 MIMEApplication 构建并将其与 msg 关联起来。
总结
至此,我们已经实现了 Python 实现自动化发送邮件的完整攻略。
邮件内容可以是文本或 HTML 格式,而且支持的内容类型有很多,比如附件、图片等。自动发送邮件一般包括 SMTP 服务器的登陆身份验证、邮件头、邮件内容和附件等几个步骤,使用 Python 邮件库可以使这些步骤变得非常简单易行,大大提高了效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现自动化发送邮件 - Python技术站