Python使用Gmail发邮件
发布时间:2020-05-25 00:00:23 所属栏目:Python 来源:互联网
导读:Python使用Gmail发邮件
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 有时候需要备份些东西到邮箱,能够让脚本定时自动运行当然是最好! 抽时间用python写了这么个脚本,使用python-libgmail库 ( sudo apt-get install python-libgmail )msend -t [emailprotected] -s "求助,图形界面进不了,哈哈” msend -t [emailprotected] -f readme.txt
msend -t [emailprotected] *.txt
msend -t [emailprotected] -z ./pics/ Usage:
msend -t [emailprotected] -s title
msend -t [emailprotected] {-s title | -f file | -z file}
Full command:
msend [emailprotected] --subject=title [--msg=body] [--files="file1;dir2"] [--zip="file1;dir2"]
Example: ( edit ~/.msend for default sender account )
msend -t [emailprotected] -s "just a test"
msend -t [emailprotected] -s "send all pic" -f ./mypics/
msend -t [emailprotected] -s "send files as zip" -z ./mytext/
msend -t [emailprotected] -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 [emailprotected] -s title
msend -t [emailprotected] {-s title | -f file | -z file}
Full command:
msend [emailprotected] --subject=title [--msg=body] [--files="file1;dir2"] [--zip="file1;dir2"]
Example: ( edit ~/.msend for default sender account )
msend -t [emailprotected] -s "just a test"
msend -t [emailprotected] -s "send all pic" -f ./mypics/
msend -t [emailprotected] -s "send files as zip" -z ./mytext/
msend -t [emailprotected] -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("[emailprotected] 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"
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
