def clean_address(address):
    """
    Cleans a single email address.
    :param address: String (email address)
    :return: String (clean email address)
    """
    if isinstance(address, header.Header):
        return clean_address(address.encode('ascii'))

    elif isinstance(address, str):
        address = address.replace("<", "")
        address = address.replace(">", "")
        address = address.replace("\"", "")
        address = address.replace("\n", " ")
        address = address.replace("MAILER-DAEMON", "")
        address = address.lower().strip()

        email = None
        for word in address.split(' '):
            email_regex = re.compile(
                "^[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}$"
                )
            email = re.match(email_regex, word)
            if email is not None:
                clean_email = email.group(0)
        if email is None:
            if address.split(' ')[-1].find('@') > -1:
                clean_email = address.split(' ')[-1].strip()
            elif address.split(' ')[-1].find('?') > -1:
                clean_email = 'n/a'
            else:
                clean_email = address

        return clean_email

    elif address is None:
        return None

    else:
        raise ValueError('An unexpected type was given to clean_address. Address was {}'.format(address))
        return None