📄 getallemail.py
字号:
import sys
import srpc
import smcic
import mgrbaseif
import string
import os
if os.name=='nt':
WMPROFILE='c:/etc/webmail.pf'
else:
WMPROFILE='/etc/webmail.pf'
#数据中心连接
def getServer():
addr=srpc.pf_getstr(WMPROFILE,'dc.server','')
port=srpc.pf_getstr(WMPROFILE,'dc.port','')
return (addr,port)
def connectServer():
addr=getServer()
cli=srpc.SRPCClient()
cli.Connect(addr[0],addr[1])
if cli!=None:
return cli
return None
#主数据库连接
def getMgrdatabase():
mgrdatabase=srpc.pf_getstr(WMPROFILE,'mgrbase.database','')
return mgrdatabase
def getMgrbaseServer():
addr=srpc.pf_getstr(WMPROFILE,'mgrbase.server','')
port=srpc.pf_getstr(WMPROFILE,'mgrbase.port','')
return (addr,port)
def connectMgrbaseServer():
addr=getMgrbaseServer()
clnt=srpc.SRPCClient()
clnt.Connect(addr[0],addr[1])
if clnt!=None:
return clnt
return None
def getEncodeStr(word,val='utf-8'):
if os.name=='nt':
wtemp=u'wtemp'
if type(word)==type(wtemp):
disvalue=word
else:
disvalue=unicode(word, 'mbcs')
if val.lower()!='utf-8':
try:
tdv=disvalue.encode(val)
except:
tdv=disvalue.encode('utf-8')
else:
tdv=disvalue.encode(val)
return tdv
else:
return word
MgrDataBase=getMgrdatabase()
def main():
cli=connectServer()
clnt=connectMgrbaseServer()
ret=mgrbaseif.call_mgrbaseif_TableCountRow(clnt,MgrDataBase,'u_account')
CountRow=ret[0]
print 'CountRow ',CountRow
emailfile=open('c:/alluseremail.txt','a')
start=0
while start<CountRow:
ret=mgrbaseif.call_mgrbaseif_TableGetRowidEx(clnt,MgrDataBase,'u_account',start,1000)
if len(ret)<2:
print 'IndexQueryData u_account failed len(ret)<2 '
break
if ret[0]==0:
print 'IndexQueryData u_account failed '
breaks
rowids=ret[1]
if rowids.RowCount()>0:
ret=mgrbaseif.call_mgrbaseif_TableGet(clnt,MgrDataBase,'u_account',rowids,'')
rowids_table=ret[1]
i=1
while i<=rowids_table.RowCount():
uid=rowids_table.GetLong(i,'uid')
if uid==1:
i+=1
uid=rowids_table.GetLong(i,'uid')
userinfo=get_userinfo(cli,clnt,uid)
if userinfo[1]!='' and userinfo[2]!='':
email=userinfo[1]+'@'+userinfo[2]
print uid,i,email
emailfile.write(email+'\n')
i+=1
start+=rowids.RowCount()
emailfile.close()
clnt.Close()
cli.Close()
#获取用户姓名与邮件地址
def get_userinfo(cli,clnt,userid):
val_name=''
user_name=''
user_domain=''
res=smcic.call_get_alias(cli,userid)
alias_table=res[1]
if alias_table.RowCount()>0:
user_name=getEncodeStr(alias_table.GetUString(1,'alias'),'gbk')
domainid=alias_table.GetLong(1,'domainid')
user_domain=get_domain_domainid(clnt,domainid)
res=smcic.call_get_userval(cli,userid,'SMS_NUMBER')
if res[0]==1:
user_name=res[1]
res=smcic.call_get_userval(cli,userid,'name')
if res[0]==1:
val_name=res[1]
if not val_name:
val_name=user_name
return (val_name,user_name,user_domain)
def get_domain_domainid(clnt,domainid):
domain=''
mftkey=srpc.MFTKEY()
mftkey.SetFieldCount(1)
mftkey.SetFieldType(0,'id',srpc.NET_SUPERLONG,0,1)
mftkey.SetSuperLong(0,domainid)
res=mgrbaseif.call_mgrbaseif_IndexQuery(clnt,MgrDataBase,'idx_domain_id_groupid',mftkey,0,1)
rowids=res[1]
if rowids.RowCount()>0:
res=mgrbaseif.call_mgrbaseif_TableGet(clnt,MgrDataBase,'d_domain',rowids,'')
domain_table=res[1]
domain=getEncodeStr(domain_table.GetUString(1,'name'),'gbk')
return domain
if __name__=='__main__':
if len(sys.argv)!=3:
main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -