最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年05月06日 11:25:47   投稿:goldensun  
這篇文章主要介紹了Python發(fā)送以整個文件夾的內(nèi)容為附件的郵件的教程,普通我們在運營商免費郵箱中發(fā)附件通常只能發(fā)文件而不能發(fā)文件夾,而該腳本則可以實現(xiàn)文件夾的發(fā)送(自己動手編程的強大之處:D),需要的朋友可以參考下

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

#!/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 <MAIL_SUBJECT>'
  else:
    sendmail(sys.argv[1])

安裝:

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

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

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

$ chmod +x send_files

用法:

$ send_files '郵件標題'

還帶有進度條哦~~

相關(guān)文章

  • Python pickle模塊實現(xiàn)對象序列化

    Python pickle模塊實現(xiàn)對象序列化

    這篇文章主要介紹了Python pickle模塊實現(xiàn)對象序列化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-11-11
  • 詳細介紹Ruby中的正則表達式

    詳細介紹Ruby中的正則表達式

    這篇文章主要介紹了詳細介紹Ruby中的正則表達式,文章中還給出了用于搜索和替換的正則表達式的使用實例,需要的朋友可以參考下
    2015-04-04
  • Win10下用Anaconda安裝TensorFlow(圖文教程)

    Win10下用Anaconda安裝TensorFlow(圖文教程)

    這篇文章主要介紹了Win10下用Anaconda安裝TensorFlow(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-06-06
  • Python?時間操作datetime詳情

    Python?時間操作datetime詳情

    這篇文章主要介紹了?Python?時間操作datetime,datetime?模塊提供處理時間和日期的多種類,簡單方便,下面文章將詳細介紹其內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 詳解python3百度指數(shù)抓取實例

    詳解python3百度指數(shù)抓取實例

    本篇文章主要介紹了python3百度指數(shù)抓取,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
    2016-12-12
  • python實現(xiàn)植物大戰(zhàn)僵尸游戲?qū)嵗a

    python實現(xiàn)植物大戰(zhàn)僵尸游戲?qū)嵗a

    這篇文章主要給大家介紹了關(guān)于python實現(xiàn)植物大戰(zhàn)僵尸游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用python具有一定的參考學(xué)習價值,需要的朋友們下面來一起學(xué)習學(xué)習吧
    2019-06-06
  • Python進階之尾遞歸的用法實例

    Python進階之尾遞歸的用法實例

    本篇文章主要介紹了Python進階之尾遞歸的用法實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • python實現(xiàn)大學(xué)人員管理系統(tǒng)

    python實現(xiàn)大學(xué)人員管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)大學(xué)人員管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python基于checksum計算文件是否相同的方法

    Python基于checksum計算文件是否相同的方法

    這篇文章主要介紹了Python基于checksum計算文件是否相同的方法,涉及Python針對二進制文件的讀取與判定技巧,需要的朋友可以參考下
    2015-07-07
  • Python讀取MRI并顯示為灰度圖像實例代碼

    Python讀取MRI并顯示為灰度圖像實例代碼

    這篇文章主要介紹了Python讀取MRI并顯示為灰度圖像實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

德惠市| 会东县| 靖西县| 彰武县| 苗栗县| 平湖市| 永定县| 民权县| 修水县| 沭阳县| 穆棱市| 铜鼓县| 高安市| 忻州市| 秦皇岛市| 辽阳县| 哈巴河县| 桓仁| 璧山县| 西华县| 拜泉县| 开鲁县| 曲水县| 漳平市| 泽州县| 德庆县| 阿拉善右旗| 湟中县| 钟山县| SHOW| 宁阳县| 定西市| 怀化市| 城市| 阳新县| 南涧| 通海县| 迁安市| 开封县| 苍梧县| 芷江|