python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件-創(chuàng)新互聯(lián)

這篇文章主要介紹python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、成都網(wǎng)站設計、網(wǎng)站建設、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。

1、最近公司實現(xiàn)部分數(shù)據(jù)統(tǒng)計、分析的報表進行每天定時發(fā)送到相關人員的郵箱之中的配置代碼被人為刪除了,需要重新恢復該功能,由于原先是在linux上使用shell配置發(fā)送,實在是太繁瑣,所以準備使用python來實現(xiàn)該功能,不過發(fā)現(xiàn)網(wǎng)上各種文檔都是未經(jīng)過整理,代碼寫的很不友善,比如發(fā)送多人的只能發(fā)送前一個郵箱,附件寫死不靈活等等,故特寫一遍比較記錄。

主要會遇到的幾個問題:

      1、smtplib.SMTPAuthenticationError: (550, b'User has no permission')

      2、smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')

             這兩個錯誤是你的密碼用的不是授權碼導致,授權碼生成自行百度。

      3、554 DT:SPM 163 smtp5

這屬于網(wǎng)易郵箱的一個退回檢測機制導致,貌似跟發(fā)送比較頻繁有關,我再發(fā)送的時候有遇到過,直到添加了一個網(wǎng)易郵箱作為收件箱之后才能發(fā)送成功,不知道是不是這個原因?qū)е?,具體原因未知,如果有人知道請在私信或者評論下告知,謝謝??!

前期準備查看系統(tǒng)上python版本號:

python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件

顯示如圖表示已經(jīng)安裝好了。

2、實現(xiàn)代碼如下(這是在Windows上的IDEL下編輯測試代碼,linux上只有改下附件路徑就好了)

# -*- coding: utf-8 -*-
from email import encoders
import os
import traceback
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

# 中文處理
def _format_addr(s):
 name, addr = parseaddr(s)
 return formataddr((Header(name, 'utf-8').encode(), addr))
def send_email(to_addr_in,filepath_in):
 # 郵件發(fā)送和接收人配置
 from_addr = '*******@163.com'
 smtp_server = 'smtp.163.com'
 password = '********' #這是你郵箱的第三方授權客戶端密碼,并非你的登錄密碼
 to_addr = to_addr_in
 to_addrs = to_addr.split(',')
 msg = MIMEMultipart()
 msg['From'] = _format_addr('Python愛好者 <%s>' % from_addr)  # 顯示的發(fā)件人
 # msg['To'] = _format_addr('管理員 <%s>' % to_addr)    # 單個顯示的收件人
 msg['To'] = ",".join(to_addrs)         # 多個顯示的收件人
 msg['Subject'] = Header('來自SMTP的問候……', 'utf-8').encode()  # 顯示的郵件標題
 # 需要傳入的路徑
 # filepath = r'D:\test'
 filepath = filepath_in
 r = os.path.exists(filepath)
 if r is False:
  msg.attach(MIMEText('no file...', 'plain', 'utf-8'))
 else:
  # 郵件正文是MIMEText:
  msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
  # 遍歷指定目錄,顯示目錄下的所有文件名
  pathDir = os.listdir(filepath)
  for allDir in pathDir:
   child = os.path.join(filepath, allDir)
   print child.decode('gbk') # .decode('gbk')是解決中文顯示亂碼問題
   # 添加附件就是加上一個MIMEBase,從本地讀取一個文件
   with open(child, 'rb') as f:
    # 設置附件的MIME和文件名,這里是txt類型:
    mime = MIMEBase('file', 'xls', filename=allDir)
    # 加上必要的頭信息:
    mime.add_header('Content-Disposition', 'attachment', filename=allDir)
    mime.add_header('Content-ID', '<0>')
    mime.add_header('X-Attachment-Id', '0')
    # 把附件的內(nèi)容讀進來:
    mime.set_payload(f.read())
    # 用Base64編碼:
    encoders.encode_base64(mime)
    # 添加到MIMEMultipart:
    msg.attach(mime)
 try:
  server = smtplib.SMTP(smtp_server, 25)
  # server.starttls()
  server.set_debuglevel(1) # 用于顯示郵件發(fā)送的執(zhí)行步驟
  server.login(from_addr, password)
  # print to_addrs
  server.sendmail(from_addr, to_addrs, msg.as_string())
  server.quit()
 except Exception, e:
  print "Error: unable to send email"
  print traceback.format_exc()
if __name__ == '__main__':
 send_email('*******@qq.com,*******@163.com','D:\\test')

3、在 PyCharm 里面執(zhí)行結果如下

python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件

顯示郵件已經(jīng)發(fā)送成功了,可在相應的郵箱里面查看,相應的文件夾下存在附件文本

python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件

如果不存在附件文本(這是截圖的網(wǎng)易郵箱,上面截圖的是QQ郵箱表示兩個郵箱都已經(jīng)收到郵件):

python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件

以上是“python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁名稱:python如何實現(xiàn)自動發(fā)送郵件發(fā)送多人、群發(fā)、多附件-創(chuàng)新互聯(lián)
當前URL:http://muchs.cn/article42/djiohc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、建站公司、域名注冊、外貿(mào)網(wǎng)站建設品牌網(wǎng)站設計、網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司