用 Python 自动发送一封邮件,可以提前设置好规范的邮件模板,让你避免犯一些低级的错误,摆脱简单重复的操作。
在 Python 中,有两个内置的模块,分别是 smtplib 和 email,其中 smtplib 主要负责发送邮件,email 主要负责构造邮件的内容和格式。
1. 导入模块
首先,我们导入相应的模块:
# 导入库
import smtplib
import email
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header
2. 设置参数
其次,我们设置相关的参数,包括 SMTP 服务器、发件人和收件人的邮箱地址等,请相应修改为自己的信息。
# 设置 SMTP 服务器地址
mail_host = 'smtp.163.com'
# 设置发件人邮箱
mail_sender = 'sender@163.com'
# 设置邮箱授权码,注意这里不是邮箱密码
mail_license = 'sender_password'
# 收件人邮箱,可以为多个收件人,用逗号隔开
mail_receivers = ['receiver_1@qq.com', 'receiver_2@163.com']
3. 构造内容
接下来,我们构造邮件的内容,包括主题、正文、附件等等,其中附件的路径和文件名等信息,要根据实际情况进行调整。
# 将多个对象集合起来
mm = MIMEMultipart('related')
# 邮件主题
subject_content = '每日销售数据分析'
# 设置发送者, 注意严格遵守格式, 里面邮箱为发件人邮箱
mm['From'] = "sender_name<sender@163.com>"
# 设置接受者, 注意严格遵守格式, 里面邮箱为接受者邮箱
mm['To'] = "receiver_1_name<receiver_1@qq.com>,receiver_2_name<receiver_2@163.com>"
# 设置邮件主题
mm['Subject'] = Header(subject_content, 'utf-8')
# 邮件正文内容
body_content = """
<html><p>
王总,您好!
<br>
昨天销售额108万,比前天增加5%,目标完成率为<b>108%</b>,整体业绩表现良好。
<br>
附件是每日销售报表,请您查收。
<br><hr>
Best Regards<br>
林骥<br>
数据分析部
</p><html>
"""
# 构造文本
message_text = MIMEText(body_content, 'html', 'utf-8')
# 向邮件对象中添加文本对象
mm.attach(message_text)
# 构造附件
atta = MIMEText(open('../data/每日销售报表.xlsx', 'rb').read(), 'base64', 'utf-8')
# 设置附件信息
atta['Content-Disposition'] = 'attachment; filename="daily_sale_report.xlsx"'
# 添加附件到邮件信息当中去
mm.attach(atta)
4. 发送邮件
最后,用 smtplib 发送邮件,如果前面的参数和内容设置正确,那么就会提示邮件发送成功。
# 创建 SMTP 对象
stp = smtplib.SMTP()
# 用邮箱域名和端口进行连接
stp.connect(mail_host, 25)
# 登录邮箱
stp.login(mail_sender, mail_license)
# 发送邮件
stp.sendmail(mail_sender, mail_receivers, mm.as_string())
# 关闭 SMTP 对象
stp.quit()
print("邮件发送成功")
5. 邮件结果
看到「邮件发送成功」之后,前往收件人的邮箱,就可以看到用 Python 自动发送过来的邮件。
对于数据分析师来讲,建议在发送邮件之前,要先对数据进行分析,提炼出数据反映的亮点和不足,并在邮件正文中写出主要分析结论,让决策者能快速抓住业务重点,从而做出更加科学的决策。
不要为了发邮件而发邮件,如果只是简单地复制粘贴表格,那么让机器人自动发送就可以了。
我们应该让机器人成为我们的得力助手,自动帮我们做一些枯燥乏味的重复工作,让我们能够腾出时间和精力,去研究和分析数据背后的故事,挖掘出更有价值的信息。