[Python]一键备份到Gmail

2 views
Skip to first unread message

Leon Zhang

unread,
Apr 6, 2009, 3:06:03 AM4/6/09
to GoogleGroup日记, bb...@live.cn, bb...@yahoo.cn, dd...@live.cn, dd...@yahoo.cn, rr...@yahoo.cn, rr...@ymail.com, 51.m livecn, allback Yahoo, friendfeed rui, Rui, rui zenbe, r01ustc...@blogger.com, r01ust...@blogger.com, rleon...@spaces.live.com, rui21...@blogger.com, GoogleGroups 杂七杂八, hktk posterous, scribblelive.天天向上, 海阔天空Blog, day-up...@spaces.live.com, rui.us...@blogger.com, r01ustc.upup

好吧。。我又Out了。。

整理资料。准备备份一次。15MB的rar包准备传到Gmail。手工操作太不靠谱,于是就自己写了一段Python脚本来完成这个工作。原理是:登录我的126邮箱,向Gmail发送带附件的Email。选择126的原因是网易公司在全国的CDN都比较快。。。

import smtplib, email
import os, sys
import hashlib
def send_mail(send_from, send_to, subject, text, attachment_bytes, auth=(), send_server='localhost'): msg = email.MIMEMultipart.MIMEMultipart() msg['From'] = send_from msg['To'] = email.Utils.COMMASPACE.join(send_to) msg['Date'] = email.Utils.formatdate(localtime=True) msg['Subject'] = subject
msg.attach( email.MIMEText.MIMEText(text) )
part = email.MIMEBase.MIMEBase('application', 'octet-stream') part.set_payload( attachment_bytes ) email.Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename=%s' % subject) msg.attach(part)
smtp = smtplib.SMTP(send_server) smtp.login(*auth) smtp.sendmail(send_from, send_to, msg.as_string()) smtp.close()
for f in sys.argv[1:]: f_name = os.path.basename(f) print '+ Uploading ' + f_name f = open(f, 'rb').read() md5 = hashlib.md5() md5.update(f) md5 = md5.hexdigest() sha1 = hashlib.sha1() sha1.update(f) sha1 = sha1.hexdigest()
send_mail( 'aaa...@126.com', ['bbb...@gmail.com'], f_name, f_name + '\r\n' + 'MD5: ' + md5 + '\r\nSHA1: ' + sha1, f, ('aaa...@126.com', 'aaaaaapwd'), 'smtp.126.com' )
print 'Done.'

比较Out的原因是,写完这个script就发现n个现成的了:Backup to EmailLifehacker上用Blat命令行实现,Javaeye上一个几乎一样功能的帖子GSend.pyGmail BackupSend To GMail(a.k.a. Gmailer),当然Gmail Drive Shell Extension也是很老的一个软件了。。令我感到安慰的是这些软件基本都达到了1MB以上的体积。。还有我的script可以算MD5。。。。不过没法自动切割文件。。

Reply all
Reply to author
Forward
0 new messages