由于我经常需要备份文件夹下的内容到邮件里面,每个打开邮件,上传文件,发送,太过麻烦,其实每次发送的文件都是放在固定位置的,只是邮件标题不同而已,于是用 python 为自己写了个发送文件到邮箱的小工具,在任意目录下执行该脚本,并指定邮件标题,就将指定文件夹下的文件发送到邮箱中备份起来 。
#!/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])
安装:
配置好收件人,发件人,smtp地址,用户名,密码及要发送文件所在的路径。
将文件保存为 send_files
,保存到 /usr/bin
下面。
然后设置文件权限为可执行:
$ chmod +x send_files
用法:
$ send_files '邮件标题'
还带有进度条哦~~
via: http://www.g2w.me/2011/12/send_files_in_dir_with_python/
分享到:
相关推荐
主要为大家详细介绍了python实现定时压缩指定文件夹发送邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了Python发送以整个文件夹的内容为附件的邮件的教程,普通我们在运营商免费邮箱中发附件通常只能发文件而不能发文件夹,而该脚本则可以实现文件夹的发送(自己动手编程的强大之处:D),需要的朋友可以参考下
Ranorex测试报告如何发送到邮箱在网上看了下,其实...然后新建一个文件夹用来放Python发送邮件的CODE。 '''发送给********@163.com''' from email.mime.application import MIMEApplication import smtplib import o
适用于学校、企业、组织等的批量发送工作,比如通过邮件批量发送证书、奖状、资料等等需要批量发送的资料,更改发送内容需要一定的python基础 场景描述:某老师收到了一批学生的成绩证书,需要逐一发送邮件给对应的...
如果在服务器运行,要保留数据,则可以复制数据库 migrations 文件夹以及数据库 data-dev.sqlite 到服务器,之后请参考这篇文章进行配置,Flask + Gunicorn + Nginx 部署 ,最后输入命令 ./venv/bin/gunicorn -w 4 -...
此博客仅为我业余记录文章所用,发布...(将文档放到指定文件夹,遍历发送即可) 服务器日志在早晨8点发送至我的邮箱,上班通勤路上可以瞄几眼前晚服务器有异常否。 以后有用到的场景再做补充。。。 以下的内容并没有更改
安全技术课程设计基于python的安全即时通讯系统。功能需求 聊天客户端 ...私钥单独保存在客户端一个文件夹下不进行传输;能显示用户名、邮箱不符合...用户离线后消息处理:用户上线后及时接收到离线时好友发送的消息。
安全技术课程设计基于python的安全即时通讯系统全部资料.zip功能需求聊天客户端注册:用户与集中服务器通信完成注册,包括用户名、密码、邮箱、性别...用户离线后消息处理:用户上线后及时接收到离线时好友发送的消息。
bi站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发) 后端 - python1.定时任务采用win自带或者time.sleep() 2....5.按日期将文件夹压缩zip 将压缩后的zip发送给指定的 邮箱或者邮箱群组.zip
3.将firefox驱动程序包放到python环境的Scripts文件夹里 4.必须要安装firefox浏览器才会调用到浏览器 5.pipelines.py的send_email方法里修改为自己的邮箱和token 6.执行spider_main.py文件启动爬虫 每到年底国债...
设计完成简易的安全即时通讯系统,实现类似于QQ的聊天软件; 需求分析 功能需求 聊天客户端 ...私钥单独保存在客户端一个文件夹下不进行传输...用户离线后消息处理:用户上线后及时接收到离线时好友发送的消息。 功能结
【资源说明】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、... 用户离线后消息处理:用户上线后及时接收到离线时好友发送的消息。
该文件将移动linux / ubuntu / etc /文件夹中的所有文件,安装依赖项(python模块和linux postfix服务器),然后启动键盘记录程序并在300毫秒内将所有键盘消息发送到您的电子邮件中。 很快,我将所有内容打包在一...
根据设置的基金涨落阈值以及达到阈值之后的额外增量给用户发送包含表格附件的提醒邮件 开始之前 环境要求 python 3 版本 依赖的第三方库 requests yagmail 开通邮箱的SMTP服务 使用方法 获取代码 直接下载zip形式的...
发布新闻后对电子邮件采取的操作(删除、登录到文件、移动到邮箱的另一个文件夹)。 您还可以使用正则表达式或预定义操作对新闻字段添加过滤器。 此外,您可以将文件附件自动转换为 PDF 文档,指定要转换的文件...
电子邮件将发送到任何预定义的邮箱。 thehivemail将提取电子邮件并在TheHive中创建案例,并提取所有附件和其他可观察对象。 响应电子邮件将发送回发件人(仅当他们在组织内部时),并且主题已更改为包括另一个可...
用flask和bootstrap实现了简单的奖状生成系统,根据上传的EXCEL或csv或txt格式文件、接收邮箱地址、选择奖状模板文件之后就可以按照生成的时间生成文件夹,并压缩发送至指定邮箱。因为是自己第一次做较大的python...