def handle_eml(msg_content, folder_path, user, index): # fp = codecs.open(path, 'r', encoding='gbk') msg = email.message_from_string(msg_content) subject = msg.get('Subject') subject = decode_subject(subject) if subject == u'应聘检验员': pdb.set_trace() fmail = msg.get('From') from_mail = utils.parseaddr(msg.get('From'))[1] content = parseutils.get_mail_content(msg) if 'gb2312' in from_mail: emailq = emailp.search(content) if emailq: from_mail = emailq.group(0) else: from_mail = '' # nick = utils.parseaddr(msg.get('From'))[0] nick = '' if fmail: nick = fmail.split(' ')[0] mailtm = msg.get('date') flag, inbox_time, name, uuid = generate_name(msg, folder_path) if flag == 0: #如果是正常邮件的话则走这个过程 if os.path.isfile(name): return 1 else: rst = parseutils.generate_table_data(subject, nick) lines = [] lines.append(subject.strip()) lines.append(rst[1].replace('"', '')) lines.append(rst[0]) result = parse_eml(msg, content) lines.append(result.get(u'联系人', '').strip()) lines.append(result.get(u'手机', '').strip()) lines.append(result.get(u'座机', '').strip()) lines.append(result.get(u'地址', '').strip()) lines.append(from_mail.strip().replace('"', '')) lines.append(user.strip()) lines.append(content) lines.append(int(time.time())) lines.append(uuid) lines.append(name[len(pth):]) lines.append(inbox_time) # parseutils.write_table([','.join(lines)]) parseutils.write_table([lines], logger) write_mail(name, msg_content) return result else: #如果是垃圾邮件或者错误邮件的话,就走这个流程 result = 'spam' if os.path.isfile(name): return name if flag == 1: result = parse_eml(msg, content, True) lines = [] lines.append(subject.strip()) lines.append(result.get('bugemail', '').strip().replace('"', '')) lines.append(user.strip()) lines.append(int(time.time())) lines.append(uuid) lines.append(name[len(pth):]) lines.append(inbox_time) parseutils.write_error_mail([lines], logger) print decode_header(subject)[0][0].replace(' ', '') write_mail(name, msg_content) return result
if 'Content-Type' in line: if 'text/plain' in line: textflag = True else: textflag = False continue if 'Content-Transfer-Encoding' in line and 'base64' in line: if textflag: base64flag = True pdb.set_trace() strings = ''.join(map(lambda st:st.replace('\n', ''), linelst)) print base64.decodestring(strings) if __name__ == '__main__': # path = 'd:/nreml' path = 'd:/nreml/bug' lst = os.listdir(path) for pth in lst: pth = path + '/' + pth try: print pth.decode('gb2312').encode('utf-8') except UnicodeDecodeError: print pth fp = codecs.open(pth, 'r') msg = email.message_from_file(fp) pdb.set_trace() content = parseutils.get_mail_content(msg) rst = parse_eml(msg, content) fp.close()
if 'text/plain' in line: textflag = True else: textflag = False continue if 'Content-Transfer-Encoding' in line and 'base64' in line: if textflag: base64flag = True pdb.set_trace() strings = ''.join(map(lambda st: st.replace('\n', ''), linelst)) print base64.decodestring(strings) if __name__ == '__main__': # path = 'd:/nreml' path = 'd:/nreml/bug' lst = os.listdir(path) for pth in lst: pth = path + '/' + pth try: print pth.decode('gb2312').encode('utf-8') except UnicodeDecodeError: print pth fp = codecs.open(pth, 'r') msg = email.message_from_file(fp) pdb.set_trace() content = parseutils.get_mail_content(msg) rst = parse_eml(msg, content) fp.close()