Amazing!用python一步实现邮件自动发送,快来试试吧
全文共3262字,预计学习时长10分钟
图源:Unsplash
“每天半小时学习编程,0基础入门。”
“会Python的人,工作都不会太差。追上同龄人,就现在!”
在“全民Python”热浪击打中,作为一名非工程师,我也加入了“Python大军”之中。
第一次使用python时,我感觉它不过是是excel的升级版,是一个可以改善数据分析工作的工具。
但随着对python掌握得越好,我开始意识到它不仅仅是一个用来创造惊人的视觉效果或者执行高等数学函数的工具。
我开始探索python更多的可能性,并意识到我只是用到了这门语言的皮毛而已,而实际上我可以开始用它来自动化一些流程。
然而,我以前总是在担心——“我不是一名软件工程师,我办不到”,这种想法一直让我不敢把自动化流程付诸实践。现在我仍不是一名软件工程师,但我已经可以使一些流程自动化,使分析更有效,并成为了团队中更有价值的成员。
从哪里开始,心中始终有一个坚定的最终目标
为了有个正确的开端,心中需要有一个最终目标。
以我为例:当认识到我没有充分挖掘这门编程语言的潜力时,我立即在想怎样才能有效地把这些概念融入到我的工作中,从而更有效率。我灵光一现——报告。
作为分析员,公司经常要求我分析并制作报告。而作为其中优秀的一员,我把数据管道设置在一个计时器上,以便能够自主输入数据,然后写好脚本并进行设置,就某一主题去创建表格、图形和所需的统计信息。然而这个报告还未完成,我还需要去把这些视觉资料粘贴到演示文稿中,再把这封邮件发送到对方手中。
完美,我已经发现了哪里可以自动化来提高工作效率。最终目标是:使用python,创建一个pdf格式的报告,将其作为附件添加到邮件并发送。
图源:Unsplash
需要什么
依赖项
下面是一些用于邮件自动发送的库和软件包。
#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 = "[email protected]"
receiver_email = "[email protected]"
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')
代码中我尽可能地多做注释,这些注释应该能帮你理解所有代码是如何工作和相互作用的。作为个人偏好,我喜欢把很多硬代码作为变量放到脚本里,以便随时编辑。
结论
任何事都可能用python来完成,现存的资源可以帮助你完成从前做不到的事。
Python真的是一个很棒的工具,帮助你更多产、更高效。
就算你和我一样不是一名技术工程师,你也可以学习一下Python,利用Python,为你的工作带来便利。
图源:item.btime
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范