关于python:python自动化之电子邮件

11次阅读

共计 1974 个字符,预计需要花费 5 分钟才能阅读完成。

本文我会应用 gmail 邮箱作为邮箱测试,lzcom321@gmail.com 是我的私人邮箱,大家也能够对我发送,以帮忙大家的邮箱自动化测试

原文地址请点击这里

将电子邮件发送给适当的集体,首先要转换为 PDF,而后再将此 PD 附加到电子邮件中,而后将所有电子邮件由 python 自动化发送。

模块

开始这个自动化案例之前,你须要将以下模块导入到 demo

# 创立 PDF
from io import BytesIO
from reportlab.pdfgen import canvas
from django.http import HttpResponse
# 自动化电子邮件
import email, smtplib, ssl
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

你可能不须要下面列出的每个模块,然而我举荐你还是将其全副导入其中

将内容转 PDF

对于本文,我将编写一个简略的示例。我会应用 canvas 创立 pdf 文件,并增加一些个性化设置,例如背景色,字体和字体大小,一些文本字符串和图像(图表)

# 创立 pdf 
c = canvas.Canvas('automate_report.pdf')
# 设置背景色彩(此色彩为黄色,我不举荐)c.setFillColorRGB(1,1,0)
# 抉择字体和字体大小
c.setFont('Helvetica', 30)
# 创立两个文本字符串并在页面上设置地位
c.drawString(5, 660,'Missing data chart for Titanic Data')
c.drawString(5, 630, 'Report generated by Python')
# 增加图像以确定其地位,宽度和高度
c.drawImage('Survival.png', 5,90,480,400)
# show 页面并保留它
c.showPage()
c.save()

注意事项

  • 图像与该 python 脚本位于同一目录中
  • 这只是一个根本的概述。如果您想理解无关创立更简单的 pdf 报告的更多信息,我倡议查阅 canvas 的文档。

自动化发送电子邮件

咱们曾经生成了一个 pdf 文件,正等待通过网络空间发送。

在咱们深入研究代码之前,你须要创立一个刻录机电子邮件帐户,以便能够在本人的电子邮件(而不是敌人的电子邮件)上测试该电子邮件。

# 将要害电子邮件方面调配给变量,以便未来进行编辑
subject = "Weekly Report"
body = "This is an email with the desired report attached"
sender_email = "lzcom321@gmail.com"
receiver_email = "lzcom321@icloud.com"
file = "automate_report.pdf" 
password = "abc123"
# 创立电子邮件头(发件人,收件人和主题)email = MIMEMultipart()
email["From"] = sender_email
email["To"] = receiver_email 
email["Subject"] = subject
# 在邮件中增加注释和附件
email.attach(MIMEText(body, "plain"))
attach_file = open(file, "rb") 
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)
# 创立用于发送邮件的 SMTP 会话
session = smtplib.SMTP('smtp.gmail.com', 587) 
session.starttls() #enable security
session.login(sender_email, password) 
text = email.as_string()
session.sendmail(sender_email, receiver_email, text)
session.quit()
print('已发送邮件')

阐明

当初,正文应该能够帮忙你理解所有代码的工作形式以及彼此之间的交互。作为集体爱好,我喜爱将通常在脚本中硬编码的内容设置为一个变量,以便在须要时更易于编辑。

正文完
 0