On Sun, 12 Jun 2011 19:20:00 +0800, TheSaint wrote: > Hello > I wrote a program which was working on python 2.x. I'd like to go for > newer version but I face the problem on how the emails are parsed. In > particular I'd like to extract the significant parts of the headers, but > the query to the servers had turned in to list of bytes. What could be a > method that will parse and return the headers into ascii if I'll pass > the headers as bytes. Even I don't know whether I can pass as they > arrive to the program. > > For example if I try: > > import poplib.POP3 > _pop= poplib.POP3(srvr) > _pop.user(args[1]) > _pop.pass_(args[2]) > > header =_pop.top(nmuid, 0) > > This will return a list of bytes string and I don't have idea to process > them in order to have a dictionary containing 'from', 'to', 'cc', 'bcc', > 'date', 'subject', 'reply-to', 'message-id' as keys.
To parse emails, you should use the email package. It already handles bytes and strings. Other than that, I'm not entirely sure I understand your problem. In general, if you have some bytes, you can decode it into a string by hand: >>> header = b'To: python-list@python.org\n' >>> s = header.decode('ascii') >>> s 'To: python-list@python.org\n' If this is not what you mean, perhaps you should give an example of what header looks like, what you hope to get, and a concrete example of how it differs in Python 3. -- Steven -- http://mail.python.org/mailman/listinfo/python-list