Kevin F wrote: > I have the following script: > > emails = [] > for msg in messagesInfo: > msgNum = int(msg.split()[0]) > msgSize = int(msg.split()[1]) > if(msgSize < 20000): > message = server.retr(msgNum)[1] > Message = join(message, "\n") > emails.append(message) > > > It downloads messages for me via my POP3 server, however, the message > format (attached below) includes ridiculous amounts of data and I just > want to return the from, subject, and body. Any pointers on how to do this? >
Have you tried server.top ? MAX_SUMMARY_LINES = 20 def get_headers(self): server = poplib.POP3(self.server_name) server.user(self.user_name) server.pass_(self.password) hdrs = [] try: msgCount, msgBytes = server.stat() for i in range(msgCount): msgNum = i+1 hdr, message, octets = server.top(msgNum, MAX_SUMMARY_LINES) hdrs.append(message) finally: server.quit() alternatively, something like: import poplib, email from email.Utils import getaddresses, parseaddr def download_mail(self): server = poplib.POP3(self.server_name) server.user(self.user_name) server.pass_(self.password) try: msgCount, msgBytes = server.stat() self.messages = [] for i in range(msgCount): msgNum = i+1 hdr, message, octets = server.retr(msgNum) mail_msg = '\n'.join( message) self.messages.append( email.message_from_string(mail_msg) ) finally: server.quit() def print_headers(self): for message in self.messages: print '#' * 80 print parseaddr( message['from'] ) print message['subject'] print message['date'] print getaddresses( message.get_all('to', []) ) print getaddresses( message.get_all('cc', []) ) Gerard -- http://mail.python.org/mailman/listinfo/python-list