本文我会使用gmail 邮箱做为邮箱测试,lzcom321@gmail.com 是个人私人邮箱,你们也能够对我发送,以帮助你们的邮箱自动化测试
原文地址请点击这里python
将电子邮件发送给适当的我的,首先要转换为PDF,而后再将此PD附加到电子邮件中,而后将全部电子邮件由python
自动化发送。django
开始这个自动化案例以前,你须要将如下模块导入到demo
中canvas
# 建立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
你可能不须要上面列出的每一个模块,可是我推荐你仍是将其所有导入其中网络
对于本文,我将编写一个简单的示例。我会使用 canvas
建立pdf文件,并添加一些个性化设置,例如背景色,字体和字体大小,一些文本字符串和图像(图表)session
# 建立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()
注意事项app
咱们已经生成了一个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('已发送邮件')
如今,注释应该能够帮助你了解全部代码的工做方式以及彼此之间的交互。做为我的喜爱,我喜欢将一般在脚本中硬编码的内容设置为一个变量,以便在须要时更易于编辑。ui