import re


def extract_domain(email):
    """Extracts the domain name from an email address.

    Args:
        email (str): The email address to extract the domain from.

    Returns:
        str: The domain name, or None if the email is invalid or doesn't contain a domain.
    """
    if not isinstance(email, str):
        return None

    # A more robust email regex (RFC 5322 Official Standard)
    email_regex = r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"

    if not re.match(email_regex, email):
        return None

    try:
        return email.split('@')[1]
    except IndexError:
        return None


if __name__ == '__main__':
    # Example usage:
    email_address = "test@example.com"
    domain = extract_domain(email_address)
    print(f"The domain of {email_address} is: {domain}")

    email_address = "invalid-email"
    domain = extract_domain(email_address)
    print(f"The domain of {email_address} is: {domain}")
