python自動化之電子郵件

本文我會使用gmail 郵箱作爲郵箱測試,[email protected] 是我的私人郵箱,大家也可以對我發送,以幫助大家的郵箱自動化測試

原文地址請點擊這裏

將電子郵件發送給適當的個人,首先要轉換爲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 = "[email protected]"
receiver_email = "[email protected]"
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('已發送郵件')

說明

現在,註釋應該可以幫助你瞭解所有代碼的工作方式以及彼此之間的交互。作爲個人喜好,我喜歡將通常在腳本中硬編碼的內容設置爲一個變量,以便在需要時更易於編輯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章