pythonimapimaplibimapclient

IMAPClient and BODY[HEADER.FIELDS (FROM)] field


I'm really starting to get the hang of IMAPClient. The code: 'BODY[HEADER.FIELDS (FROM)]' returns

From: First Last <first.last@domain.com>

I'd really just like it to return the email address like this:

first.last@lbox.com

Do I need to pass it to a variable first and trim it down or is there another fetch modifier I can use?

response = server.fetch(messages, ['FLAGS', 'RFC822.SIZE', 'BODY[HEADER.FIELDS (FROM)]'])
for msgid, data in response.iteritems():
    print '   ID %d: %d bytes, From: %s flags=%s' % (msgid,
                                            data['RFC822.SIZE'],
                                            data['BODY[HEADER.FIELDS (FROM)]'],
                                            data['FLAGS'])

Solution

  • No - you can't do that with an IMAP request, if you look at my other post you'll notice something using parseaddr, but here it is again with your example:

    >>> from email.utils import parseaddr
    >>> a = 'From: First Last <first.last@domain.com>'
    >>> parseaddr(a)
    ('First Last', 'first.last@domain.com')