1. 程式人生 > 程式設計 >python自動化傳送郵件例項講解

python自動化傳送郵件例項講解

在python中,通過如下兩個模組可以實現郵件的自動化操作

  1. smtplib
  2. email

smtplib模組是對SMTP協議的封裝,用於傳送郵件;email模組用於構建郵件內容,支援以下3種形式的郵件

  1. 純文字
  2. html
  3. 帶附件

首先來看下郵件的構建,對於一封郵件,需要指定發件人,收件人,主題,正文等內容,以最簡單的純文字郵件為例,構建方式如下

>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> subject = '主題'
>>> message = MIMEText('正文','plain','utf-8')
>>> message['From'] = Header("發件人",'utf-8')
>>> message['To'] = Header("收件人",'utf-8')
>>> message['Subject'] = Header(subject,'utf-8')

通過MIMEText方法來建立郵件,第一個引數為郵件的正文,第二個引數為郵件正文的形式,plain表示純文字,第三個引數指定編碼方式;然後通過From,To,Subject等屬性的設定來分別指定發件人,收件人和主題。

對於html形式的郵件,只需要指定MIMEText的第二個引數為html即可,用法如下

>>> msg = '<p>正文</p>'
>>> message = MIMEText(msg,'html','utf-8')

對於帶附件的郵件,需要通過MIMEMultipart來建立郵件,用法如下

>>> from email.mime.multipart import MIMEMultipart
>>> message = MIMEMultipart()
>>> message.attach(MIMEText('正文','utf-8'))
>>> attach = MIMEText(open('input.txt','rb').read(),'base64','utf-8')
>>> attach["Content-Type"] = 'application/octet-stream'
>>> attach["Content-Disposition"] = 'attachment; filename="test.txt"'
>>> message.attach(attach)

建立好郵件之後,就可以通過SMTP來發送了,這裡以QQ郵箱為例,首先需要開啟QQ郵箱的SMTP伺服器,然後生成授權碼,圖示如下

python自動化傳送郵件例項講解

用QQ郵箱傳送郵件的程式碼如下

>>> import smtplib
>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> message = MIMEText('正文','utf-8')
>>> message['Subject'] = Header('主題','utf-8')
>>> server=smtplib.SMTP_SSL("smtp.qq.com",465)
>>> server.login('[email protected]','dvyybvbwpnnbbdaj')
>>> server.sendmail('[email protected]','[email protected]',message.as_string())

對於需要定期傳送,且內容較為固定的郵件,通過自動化可以大大減少工作量,比如通過python監控磁碟空間,當使用率超過80%時,自動向運維人員傳送郵件,以提醒備份和清理磁碟。

到此這篇關於python自動化傳送郵件例項講解的文章就介紹到這了,更多相關使用python自動化傳送郵件內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!