香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python发送以整个文件夹的内容为附件的邮件的教程


时间:2021-11-29 16:25 作者:admin


由于我经常需要备份文件夹下的内容到邮件里面,每个打开邮件,上传文件,发送,太过麻烦,其实每次发送的文件都是放在固定 置的,只是邮件标题不同而已,于是用 python/' target='_blank'>python 为自己写了个发送文件到邮箱的小工具,在任意目录下执行该脚本,并指定邮件标 ,就将指定文件夹下的文件发送到邮箱中备份起来 。

#!/usr/bin/env Python# coding: utf-8from smtplib import SMTP, quotedata, CRLF, SMTPDataErrorfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBasefrom email.MIMEText import MIMETextfrom email import Encodersfrom sys import stderr, stdoutimport osimport sysclass 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 eif __name__ == '__main__':  if len(sys.argv) == 1:    print 'Please specific a subject'    print 'Usage: send_files <MAIL_SUBJECT>'  else:    sendmail(sys.argv[1])

安装:

配置好收件人,发件人,smtp地址,用户名,密码及要发送文件所在的路径。

将文件保存为 send_files,保存到 /usr/bin 下面。

然后设置文件权限为可执行:

$ chmod +x send_files

用法:

$ send_files '邮件标题'

还带有进度条哦~~

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)