def update_email_body()

in workmail-update-email/src/utils.py [0:0]


def update_email_body(parsed_email):
    """
    Finds and updates the "text/html" and "text/plain" email body parts.
    Parameters
    ----------
    parsed_email: email.message.Message, required
        EmailMessage representation the downloaded email
    Returns
    -------
    email.message.Message
        EmailMessage representation the updated email
    """
    text_charset = None
    if parsed_email.is_multipart():
        # Walk over message parts of this multipart email.
        for part in parsed_email.walk():
            content_type = part.get_content_type()
            content_disposition = str(part.get_content_disposition())
            if content_type == 'text/plain' and 'attachment' not in content_disposition:
                transfer_encoding = part['Content-Transfer-Encoding']
                text_charset = part.get_content_charset()
                new_text_body = update_text_content(part)
                part.set_content(new_text_body, "plain", charset=text_charset, cte=transfer_encoding)
            elif content_type == 'text/html' and 'attachment' not in content_disposition:
                transfer_encoding = part['Content-Transfer-Encoding']
                html_charset = part.get_content_charset()
                new_html_body = update_html_content(part)
                if new_html_body is not None:
                    part.set_content(new_html_body.encode(html_charset), "text", "html", cte=transfer_encoding)
                    part.set_charset(html_charset)
    else:
        # Its a plain email with text/plain body
        transfer_encoding = parsed_email['Content-Transfer-Encoding']
        text_charset = parsed_email.get_content_charset()
        new_text_body = update_text_content(parsed_email)
        parsed_email.set_content(new_text_body, "plain", charset=text_charset, cte=transfer_encoding)
    return parsed_email