⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getallemail.py

📁 读取配置文件连接数据库
💻 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 + -