Build the name of the author of a message as described in the Internet
    Message Format specification: https://tools.ietf.org/html/rfc5322#section-3.6.2


    @param author_name: complete name of the originator of the message.

    @param author_email_address: address of the mailbox to which the author
        of the message suggests that replies be sent.


    @return: a string representing the author of the message, that is, the
        mailbox of the person or system responsible for the writing of the
        message.  This string is intended to be used as the "From:" field
        of the message.

def __build_author_name_expr(author_name, author_email_address):
    """
    Build the name of the author of a message as described in the Internet
    Message Format specification: https://tools.ietf.org/html/rfc5322#section-3.6.2


    @param author_name: complete name of the originator of the message.

    @param author_email_address: address of the mailbox to which the author
        of the message suggests that replies be sent.


    @return: a string representing the author of the message, that is, the
        mailbox of the person or system responsible for the writing of the
        message.  This string is intended to be used as the "From:" field
        of the message.
    """
    assert author_name or author_email_address, 'Both arguments MUST NOT be bull'

    # Use the specified name of the author or the username of his email
    # address.
    author_name_expr = author_name or author_email_address[:author_email_address.find('@')]

    # Escape the name of the author if it contains a space character.
    if ' ' in author_name_expr:
        author_name_expr = '"%s"' % author_name_expr

    # Complete the name of the author with his email address when specified.
    if author_email_address:
        author_name_expr = '%s <%s>' % (author_name_expr, author_email_address)

    return author_name_expr