Пример #1
0
def decodeWrapper(header):

    # Decodes an Email header, returns a string
    # A hack for headers without a space between decoded name and email
    try:

        dec = email.header.decode_header(header.replace('=?=<', '=?= <'))

    except email.errors.HeaderParseError:

        logger.warning('Exception in decode, skipping.')
        return header

    parts = []

    for dec_part in dec:

        if dec_part[1]:

            try:
                parts.append(dec_part[0].decode(dec_part[1]))
            except (AttributeError, LookupError, UnicodeDecodeError):
                logger.warning('Exception in decode, skipping.')

        elif isinstance(dec_part[0], bytes):

            parts.append(dec_part[0].decode())

        else:
            parts.append(dec_part[0])

    return str.join(' ', parts)
Пример #2
0
def getHeaderWrapper(message, header_name, decode):

    header = message[header_name]

    if isinstance(header, str):

        header = header.replace(' \r\n', '').replace('\r\n', '')
        return (decodeWrapper(header) if decode else header)

    return ''
def test_dump_subject(header):
    # workaround for http://bugs.python.org/issue504152
    header = header.replace('\r\n ', ' ')
    msg = rfc822.Message(StringIO.StringIO(header))
    sub = msg["subject"]
    data = email.header.decode_header(sub)
    sub = data[0][0]
    subcharset = data[0][1]
    if subcharset != None:
        sub = sub.decode(subcharset)
    safe_print('\tSubject: [%s].' % (sub))
def dump_subject(header):
    # workaround for http://bugs.python.org/issue504152
    header = header.replace("\r\n ", " ")
    msg = rfc822.Message(StringIO.StringIO(header))
    if msg.has_key("subject"):
        sub = msg["subject"]
        data = email.header.decode_header(sub)
        sub = data[0][0]
        subcharset = data[0][1]
        if subcharset != None:
            sub = sub.decode(subcharset)
        safe_print("\tSubject: [%s]." % (sub))
    else:
        safe_print("\tSubject: [%s]." % ("[no subject]"))
def dump_subject(header):
    # workaround for http://bugs.python.org/issue504152
    header = header.replace('\r\n ', ' ')
    msg = rfc822.Message(StringIO.StringIO(header))
    if (msg.has_key("subject")):
        sub = msg["subject"]
        data = email.header.decode_header(sub)
        sub = data[0][0]
        subcharset = data[0][1]
        if subcharset != None:
            sub = sub.decode(subcharset)
        safe_print('\tSubject: [%s].' % (sub))
    else:
        safe_print('\tSubject: [%s].' % ("[no subject]"))
Пример #6
0
def clean_header(header):
    """
    The headers returned by the IMAP server are not necessarily
    human-friendly, especially if they contain non-ascii characters. This
    function cleans all of this and return a beautiful, utf-8 encoded
    header.
    """
    if header is None:
        return ""
    if header.startswith('"'):
        header = header.replace('"', "")
    cleaned = email.header.decode_header(header)
    assembled = ""
    for element in cleaned:
        if assembled == "":
            separator = ""
        else:
            separator = " "
        if element[1] is not None:
            decoded = element[0].decode(element[1])
        else:
            decoded = element[0]
        assembled += "%s%s" % (separator, decoded)
    return assembled