好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

coremail导出用户草稿箱中的邮件并打包

#!/usr/bin/python
#?-*-?coding:utf-8?-*-
import?subprocess
import?datetime
import?re
import?os
import?tarfile
import?time

#?邮件导出??目录结构说明
#?/home/coremail/ExportUserDraftBoxEml
#?-->?user@domain目录
#?------>?eml格式的文件

exportEmlDir?=?'/home/coremail/ExportUserDraftBoxEml'
nowDateTime?=?datetime.datetime.now().strftime("%Y%m%d")
loggerFile?=?'/tmp/exportEmlForDraftBox.log.%s'?%?nowDateTime

#?日志
def?logger(context):
????with?open(loggerFile,?'a+')?as?f:
????????f.write(context?+?'\n')
????????f.flush()
????????print?context


#?压缩?生成list标志文件?上传压缩包?上传list文件?删除exportEmlDir目录
def?compressFile():
????compressfilename?=?'MAIL_EML_RJZX_%s.tar.gz'?%?nowDateTime
????compressfilefullpath?=?'/home/coremail/%s'%?compressfilename
????#?print?compressfilename
????#?print?compressfilefullpath
????logger('[-]?compress?file?%s'?%?compressfilefullpath)
????with?tarfile.open(compressfilefullpath,?'w:gz')?as?tar_f:
????????tar_f.add(exportEmlDir)

????#?生成list标志文件?压缩包名字?和?文件大小
????listFile?=?'/home/coremail/MAIL_EML_RJZX_%s.list'?%?nowDateTime
????with?open(listFile,?'w')?as?f:
????????f.write('%s:?%sKB'?%?(compressfilename,?os.stat(compressfilefullpath).st_size)?+?'\n')

????#?5秒后再删除文件
????time.sleep(5)
????if?os.path.isdir(exportEmlDir):
????????logger('[-]?delete?directories?file?%s'?%?exportEmlDir)
????????#?shutil.rmtree(exportEmlDir)
????if?os.path.isfile(compressfilefullpath):
????????logger('[-]?delete?tar?file?%s'?%?compressfilefullpath)
????????#?os.remove(compressfilefullpath)

????print?'[+]?list?file?save?to?%s'?%?listFile


#?列出用户草稿箱的邮件
def?listUserDraftBoxMail(coremailuser):
????msgYesterdayDate?=?(datetime.datetime.now()?+?datetime.timedelta(days=-1)).strftime("%Y%m%d")
????list_msg?=?'/home/coremail/bin/userutil?--list-msg?%s?\'fid=2&time=%s\''?%?(coremailuser,?msgYesterdayDate)
????logger(list_msg)
????mailListResult?=?subprocess.Popen(list_msg,?shell=True,?stdout=subprocess.PIPE,?stderr=subprocess.STDOUT)
????for?line?in?mailListResult.stdout.readlines():
????????#?print?line
????????mid?=?re.search("1tb[a-zA-Z0-9\+\-\*\/]{19}",?line)
????????if?mid:
????????????logger(line.strip())
????????????exportUserDraftBoxMail(coremailuser.strip(),?mid.group().strip())


#?导出用户草稿箱中的邮件
def?exportUserDraftBoxMail(coremailuser,?mid):
????userEmlDir?=?os.path.join(exportEmlDir,?coremailuser)
????print?userEmlDir
????if?not?os.path.isdir(userEmlDir):
????????logger('[-]?create?%s?directories'?%?userEmlDir)
????????os.mkdir(userEmlDir)??#?创建保存用户邮件的目录
????#?print?coremailuser
????#?print?mid
????filterMid?=?re.sub('[\+\-\*\/]',?'',?mid)
????#?print?filterMid
????emlFileName?=?os.path.join(userEmlDir,?filterMid)
????dump_msg?=?'/home/coremail/bin/userutil?--dump-msg?%s?%s>%s.eml'?%?(coremailuser,?mid,?emlFileName)
????logger(dump_msg)
????os.system(dump_msg)

#?orgID?=?['a',?'b',?'c']??#?根据组织id中的用户导出邮件
orgUnitId?=?['100002345']??#?部门id

if?__name__?==?'__main__':
????if?not?os.path.isdir(exportEmlDir):
????????os.mkdir(exportEmlDir)??#?创建邮件保存的目录
????#?listUserDraftBoxMail('admin@leejay测试数据.cn')

????#?查找组织ID中的用户传入方法
????for?orgline?in?orgUnitId:
????????#?列出某个组织下面的所有用户
????????#?select_user?=?'/home/coremail/bin/userutil?--select-user?@\'org_id="%s"\''?%?orgline
????????#?列出a组织下,某个部门的所有用户
????????select_user?=?'/home/coremail/bin/userutil?--call-api?"cmd=302&org_id=a&org_unit_id=%s&scope=2"|sed?"s/Struct/\\n/g"|awk?-F\'un=|,dn=|,dd=\'?\'{print?$2"@"$3}\'|grep?-v?"^@"'?%?orgline
????????logger(select_user)
????????userlistRelust?=?subprocess.Popen(select_user,?shell=True,?stdout=subprocess.PIPE,?stderr=subprocess.STDOUT)
????????for?userline?in?userlistRelust.stdout.readlines():
????????????#?print?userline.strip()
????????????listUserDraftBoxMail(userline.strip())

????#?打包压缩
????compressFile()

????print?'[+]?user?mail?save?to?%s'?%?exportEmlDir
????print?'[+]?log?save?to?%s'?%?loggerFile

查看更多关于coremail导出用户草稿箱中的邮件并打包的详细内容...

  阅读:33次