En Fri, 28 Mar 2008 16:47:51 -0300, SPJ <[EMAIL PROTECTED]> escribió:
> I am facing a strange problem when I am trying to retrieve multipart > mail from POP server with attachments. > The task is to write a script which will retrieve mail with specific > 'from' field. Get the subject, body and attachments if any and reuse > this info to send mail with different format to ticketing system. > > The global variable values I am expecting is: > msgList = [[msg1_subject,msg1_body,0],[msg2_subject,msg2_body,1]] and so > on > attachmentList=[['none'],['attachname.txt','filename.pl']] > where none is no attachments. > > But the result I am getting is: > msgList = [[msg1_subject,msg1_body,0],[msg2_subject,msg2_body,1]] and so > on > attachmentList=[[none],['none', 'attachname.txt', 'filename.pl']] > > An extra 'none' in the attachment list except for plain/text mails > without attachments. None is a special object in Python, 'none' is a string, and none is a name that may refer to anything. They're not the same thing. I would remove *all* Nones and nones and "none"s. An empty list is enough indication that there are no attachments, ok? > # regex for searching mails from [EMAIL PROTECTED] > soc = re.compile("[EMAIL PROTECTED]") This regex may be too slow. Use soc = re.compile(r"[EMAIL PROTECTED]") (note the r and the \. and lack of .* on both ends; also @ isn't a special character so it's not necesary to escape it) > if soc.match(check1): > subject = msg1.get('Subject') # Subject for only mails With the above reg.exp., use: if soc.search(check1): ... > if part.get_content_type() != ("text/html" or > "text/plain" or "multipart/alternative" or "multipart/mixed"): That's wrong. The () evaluate simply to "text/html". You surely want this: content_type = part.get_content_type() if content_type not in ["text/html", "text/plain", "multipart/alternative", "multipart/mixed"]: ... -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list