日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python發(fā)送以整個(gè)文件夾的內(nèi)容為附件的郵件的教程

系統(tǒng) 2171 0

由于我經(jīng)常需要備份文件夾下的內(nèi)容到郵件里面,每個(gè)打開(kāi)郵件,上傳文件,發(fā)送,太過(guò)麻煩,其實(shí)每次發(fā)送的文件都是放在固定 置的,只是郵件標(biāo)題不同而已,于是用 python 為自己寫(xiě)了個(gè)發(fā)送文件到郵箱的小工具,在任意目錄下執(zhí)行該腳本,并指定郵件標(biāo) ,就將指定文件夾下的文件發(fā)送到郵箱中備份起來(lái) 。

            
#!/usr/bin/env python
# coding: utf-8

from smtplib import SMTP, quotedata, CRLF, SMTPDataError
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
from sys import stderr, stdout
import os
import sys

class ExtendedSMTP(SMTP):
  def data(self, msg):
    self.putcmd("data")
    (code,repl)=self.getreply()
    if self.debuglevel > 0 : print >> stderr, "data:", (code, repl)
    if code != 354:
      raise SMTPDataError(code,repl)
    else:
      q = quotedata(msg)
      if q[-2:] != CRLF:
        q = q + CRLF
      q = q + "." + CRLF

      # begin modified send code
      chunk_size = 2048
      bytes_sent = 0

      while bytes_sent != len(q):
        chunk = q[bytes_sent:bytes_sent+chunk_size]
        self.send(chunk)
        bytes_sent += len(chunk)
        if hasattr(self, "callback"):
          self.callback(bytes_sent, len(q))
      # end modified send code

      (code,msg)=self.getreply()
      if self.debuglevel >0 : print>>stderr, "data:", (code,msg)
      return (code,msg)

def callback(progress, total):
  percent = 100. * progress / total
  stdout.write('\r')
  stdout.write("%s bytes sent of %s [%2.0f%%]" % (progress, total, percent))
  stdout.flush()
  if percent >= 100: stdout.write('\n')

def sendmail(subject):
  MAIL_FROM = 'mymail@qq.com'
  MAIL_TO = ['mymail@qq.com']
  BAK_DIR = '/path/to/bak/folder'

  msg = MIMEMultipart()
  msg['From'] = MAIL_FROM
  msg['Subject'] = subject

  msg.attach( MIMEText('test send attachment') )
  for filename in os.listdir(BAK_DIR):
    part = MIMEBase('application', "octet-stream")
    part.set_payload(open(os.path.join(BAK_DIR, filename),"rb").read() )
    Encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(filename))
    msg.attach(part)

  try:
    smtp = ExtendedSMTP()
    smtp.callback = callback
    smtp.connect('smtp.qq.com', 25)
    smtp.login('mymail', 'mypwd')
    smtp.sendmail(MAIL_FROM, MAIL_TO, msg.as_string())
    smtp.close()
    os.system('rm -f %s/*' % BAK_DIR)
  except Exception, e:
    print e

if __name__ == '__main__':
  if len(sys.argv) == 1:
    print 'Please specific a subject'
    print 'Usage: send_files 
            
              '
  else:
    sendmail(sys.argv[1])


            
          

安裝:

配置好收件人,發(fā)件人,smtp地址,用戶名,密碼及要發(fā)送文件所在的路徑。

將文件保存為 send_files,保存到 /usr/bin 下面。

然后設(shè)置文件權(quán)限為可執(zhí)行:

            
$ chmod +x send_files


          

用法:

            
$ send_files '郵件標(biāo)題'


          

還帶有進(jìn)度條哦~~


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 盖州市| 武义县| 新丰县| 崇信县| 托里县| 兴和县| 兴山县| 宿迁市| 广平县| 安乡县| 英德市| 栾城县| 荆州市| 界首市| 三门县| 乌拉特后旗| 东兴市| 宁南县| 海盐县| 东至县| 屯留县| 陆良县| 伊吾县| 邵东县| 浦东新区| 平湖市| 花垣县| 德化县| 龙江县| 雷波县| 安国市| 涡阳县| 清水河县| 喜德县| 永善县| 安平县| 连城县| 临潭县| 襄汾县| 锦屏县| 郸城县|