python定时发送邮件_邮件自动发送?一文教你如何用Python提高工作效率,附代码教程!...

全文共3262字,预计学习时长10分钟

f3d3572c11dfa9ecb4fa08b5fe801306908fc116.jpeg?token=0b0c81036aa0352756b4b6be2ab704ff&s=872049A44C13AD8A03BDE8000300E010图源:Unsplash

“每天半小时学习编程,0基础入门。”

“会Python的人,工作都不会太差。追上同龄人,就现在!”

在“全民Python”热浪击打中,作为一名非工程师,我也加入了“Python大军”之中。

第一次使用python时,我感觉它不过是是excel的升级版,是一个可以改善数据分析工作的工具。

但随着对python掌握得越好,我开始意识到它不仅仅是一个用来创造惊人的视觉效果或者执行高等数学函数的工具。

我开始探索python更多的可能性,并意识到我只是用到了这门语言的皮毛而已,而实际上我可以开始用它来自动化一些流程。

然而,我以前总是在担心——“我不是一名软件工程师,我办不到”,这种想法一直让我不敢把自动化流程付诸实践。现在我仍不是一名软件工程师,但我已经可以使一些流程自动化,使分析更有效,并成为了团队中更有价值的成员。

f9dcd100baa1cd1195a2ad49a9722cf9c3ce2d2d.jpeg?token=d57378aa6193c3814fd7dc5fa3c0987e

从哪里开始,心中始终有一个坚定的最终目标

为了有个正确的开端,心中需要有一个最终目标。

以我为例:当认识到我没有充分挖掘这门编程语言的潜力时,我立即在想怎样才能有效地把这些概念融入到我的工作中,从而更有效率。我灵光一现——报告。

作为分析员,公司经常要求我分析并制作报告。而作为其中优秀的一员,我把数据管道设置在一个计时器上,以便能够自主输入数据,然后写好脚本并进行设置,就某一主题去创建表格、图形和所需的统计信息。然而这个报告还未完成,我还需要去把这些视觉资料粘贴到演示文稿中,再把这封邮件发送到对方手中。

完美,我已经发现了哪里可以自动化来提高工作效率。最终目标是:使用python,创建一个pdf格式的报告,将其作为附件添加到邮件并发送。

562c11dfa9ec8a134747ea126d53758aa1ecc0bd.jpeg?token=217e2ce16adf60da6738d924d3cb876e&s=BDB0739102533DC85039414B03003052图源:Unsplash

f9dcd100baa1cd1195a2ad49a9722cf9c3ce2d2d.jpeg?token=d57378aa6193c3814fd7dc5fa3c0987e

需要什么

依赖项

下面是一些用于邮件自动发送的库和软件包。

#to create pdf report

from io import BytesIO

from reportlab.pdfgen import canvas

from django.http import HttpResponse#to automate email

import email, smtplib, sslfrom email import encoders

from email.mime.base import MIMEBase

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

以上是我想在个人项目中使用的,您可能不是全都需要。

报告

本文将列出一个简单的例子。使用“canvas”创建pdf,并自定义一些设置,如背景色、字体和字体大小、文本字符串和图像(或图表)。

代码

#name and create pdf

c = canvas.Canvas('automate_report.pdf')

#set background color (this color is yellow I do not recommend)

c.setFillColorRGB(1,1,0)#Select font and font size

c.setFont('Helvetica', 30)#create two text strings and set there position onthe pagec.drawString(5, 660,'Missing data chart for Titanic Data')

c.drawString(5, 630, 'Report generated by Python')#add an image determine it'sposition and width and height

c.drawImage('Survival.png', 5,90,480,400)#show page and save it

c.showPage()

c.save()

这时pdf创建好了。

需要注意以下事项:

1、 图像与python脚本要位于同一目录下。

2、 这只是一个基本大纲,如果想创建更复杂的pdf报告,建议访问canvas官方文档。

电子邮件

我们已经制作了一个pdf报告,现在看看怎么通过网络发送它!

在深入研究代码之前,你可能需要创建一个接收该pdf的电子邮件账户,以便在自己的邮箱中检测邮件,而不会用到朋友的邮箱账户做该实验。

提示:确保不要忘记密码。

代码:

# assign key emailaspects to variables for easier future editingsubject = "Weekly Report"

body = "This is an email with the desired report attached"

sender_email = "connerleavitt@gmail.com"

receiver_email = "connerleavitt@icloud.com"

file = "automate_report.pdf" # in the same directory as script

password = "abc123"# Create the email head (sender, receiver, andsubject)email = MIMEMultipart()

email["From"] = sender_email

email["To"] = receiver_email

email["Subject"] = subject# Add body and attachment toemailemail.attach(MIMEText(body, "plain"))attach_file = open(file,"rb") # open the file

report = MIMEBase("application", "octate-stream")

report.set_payload((attach_file).read())

encoders.encode_base64(report)

#add report header with the file name

report.add_header("Content-Decomposition", "attachment",filename = file)

email.attach(report)#Create SMTP session for sending the mailsession =smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port

session.starttls() #enable security

session.login(sender_email, password) #login with mail_id and password

text = email.as_string()

session.sendmail(sender_email, receiver_email, text)

session.quit()

print('Mail Sent')

代码中我尽可能地多做注释,这些注释应该能帮你理解所有代码是如何工作和相互作用的。作为个人偏好,我喜欢把很多硬代码作为变量放到脚本里,以便随时编辑。

f9dcd100baa1cd1195a2ad49a9722cf9c3ce2d2d.jpeg?token=d57378aa6193c3814fd7dc5fa3c0987e

结论

任何事都可能用python来完成,现存的资源可以帮助你完成从前做不到的事。

Python真的是一个很棒的工具,帮助你更多产、更高效。

就算你和我一样不是一名技术工程师,你也可以学习一下Python,利用Python,为你的工作带来便利。

5bafa40f4bfbfbed7e069d36e4a01333aec31ff6.jpeg?token=7de4bb53038fec5d97c8b26b1d6bc32a&s=9211216CC40224FC57FE58120300D0DA图源:item.btime

0d338744ebf81a4ccee66127c64a845c272da6ea.jpeg?token=e2bf3a4759168973bd08675d859965f0

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值