Python使用Gmail发邮件
发布时间:2020-12-17 17:22:21 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 有时候需要备份些东西到邮箱,能够让脚本定时自动运行当然是最好! 抽时间用python写了这么个脚本,使用python-libgmail库 ( sudo apt-get install py
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
有时候需要备份些东西到邮箱,能够让脚本定时自动运行当然是最好! 抽时间用python写了这么个脚本,使用python-libgmail库 ( sudo apt-get install python-libgmail )
msend -t [email?protected] -s "求助,图形界面进不了,哈哈” msend -t [email?protected] -f readme.txt msend -t [email?protected] *.txt msend -t [email?protected] -z ./pics/ Usage: msend -t [email?protected] -s title msend -t [email?protected] {-s title | -f file | -z file} Full command: msend [email?protected] --subject=title [--msg=body] [--files="file1;dir2"] [--zip="file1;dir2"] Example: ( edit ~/.msend for default sender account ) msend -t [email?protected] -s "just a test" msend -t [email?protected] -s "send all pic" -f ./mypics/ msend -t [email?protected] -s "send files as zip" -z ./mytext/ msend -t [email?protected] -s "send both" -f mytext -z mytext #!/usr/bin/env python # -*- coding: utf8 -*- import os,sys import getopt import libgmail class GmailSender(libgmail.GmailAccount) : def __init__(self,myacct,passwd): self.myacct = myacct self.passwd = passwd proxy = os.getenv("http_proxy") if proxy : libgmail.PROXY_URL = proxy try: self.ga = libgmail.GmailAccount(myacct,passwd) self.ga.login() except libgmail.GmailLoginFailure,err: print "Login failed. (Check $HOME/.msend?)n",err sys.exit(1) except Exception,err: print "Login failed. (Check network?)n",err sys.exit(1) def sendMessage(self,to,subject,msg,files): if files : gmsg = libgmail.GmailComposedMessage(to,filenames=files) else: gmsg = libgmail.GmailComposedMessage(to,msg ) try : if self.ga.sendMessage(gmsg): return 0 else: return 1 except Exception,err : print err return 1 class TOOLS : def extrPath(path): list=[] for root,dirs,files in os.walk(path): for f in files: list.append("%s/%s"%(root,f)) return list extrPath = staticmethod(extrPath) if __name__ == "__main__": to=subject=zip=None msg="" files=[] zip=[] # getopt try: opts,args = getopt.getopt(sys.argv[1:],'t:s:m:f:d:z:',[ 'to=','subject=','msg=','files=',"dir=","zip=" ]) except getopt.GetoptError,err: print str(err) sys.exit(2) for o,a in opts: if o in [[--to","-t]]: to = a elif o in [[--msg","-m]]: msg = a + "n====================n" elif o in [[--subject","-s]]: subject = a elif o in [[--files","-f]]: if a.find(';') > 0: files += a.split(';') else: files += a.replace('n',' ').split(' ') elif o in [[--dir","-d]]: if a.find(';') > 0: files += a.split(';') else: files += a.replace('n',' ').split(' ') elif o in [[--zip","-z]]: if a.find(';') > 0: zip += a.split(';') else: zip += a.replace('n',' ').split(' ') # extrPath files += args if len(files)>0: msg += "n=====FILE=====n" for f in files: if os.path.isfile(f): msg += "%sn"%f elif os.path.isdir(f): files.remove(f) ret = TOOLS.extrPath(f) files += ret; msg += "n=====FOLDER[%s]=====n"%f msg += "n".join(ret) for f in zip: name=f.replace('/','_') cmd = "zip -r /tmp/%s.zip %s 1>/tmp/%s.log 2>&1"%(name,f,name) os.system(cmd) msg += "n=====ZIP[%s]=======n"%f msg += open("/tmp/%s.log"%name).read() os.unlink("/tmp/%s.log"%name) zip.remove(f) zip.append("/tmp/%s.zip"%name) files += zip #print msg #sys.exit(0) if not subject and len(files)>0: subject="Send %d files."%len(files) if not to or not subject: print """ Usage: msend -t [email?protected] -s title msend -t [email?protected] {-s title | -f file | -z file} Full command: msend [email?protected] --subject=title [--msg=body] [--files="file1;dir2"] [--zip="file1;dir2"] Example: ( edit ~/.msend for default sender account ) msend -t [email?protected] -s "just a test" msend -t [email?protected] -s "send all pic" -f ./mypics/ msend -t [email?protected] -s "send files as zip" -z ./mytext/ msend -t [email?protected] -s "send both" -f mytext -z mytext """ sys.exit(3) conf = "%s/%s" % ( os.getenv("HOME"),".msend" ) if not os.path.exists(conf): open(conf,"wb").write("[email?protected] yourpassword") print """n Edit $HOME/.msend first.n""" sys.exit(3) myacct,passwd = open( conf ).read().split() gs = GmailSender( myacct,passwd ) if gs.sendMessage(to,files): print "FAIL" else: for f in zip: os.unlink(f) print "OK" 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |