<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def render_email_template(email_template, base_url, extra_context=None, user=None):
 """ Render the email template. :type email_template: fluentcms_emailtemplates.models.EmailTemplate :type base_url: str :type extra_context: dict | None :type user: django.contrib.auth.models.User :return: The subject, html and text content :rtype: fluentcms_emailtemplates.rendering.EmailContent """

    dummy_request = _get_dummy_request(base_url, user)
    context_user = user or extra_context.get('user', None)

    context_data = {
        'request': dummy_request,
        'email_template': email_template,
        'email_format': 'html',
        'user': user,
        # Common replacements
        'first_name': context_user.first_name if context_user else '',
        'last_name': context_user.last_name if context_user else '',
        'full_name': context_user.get_full_name() if context_user else '',
        'email': context_user.email if context_user else '',
        'site': extra_context.get('site', None) or {
            'domain': dummy_request.get_host(),
            'name': dummy_request.get_host(),
        }
    }
    if extra_context:
        context_data.update(extra_context)

    # Make sure the templates and i18n are identical to the emailtemplate language.
    # This is the same as the current Django language, unless the object was explicitly fetched in a different language.
    with switch_language(email_template):
        # Get the body content
        context_data['body'] = _render_email_placeholder(dummy_request, email_template, base_url, context_data)
        context_data['subject'] = subject = replace_fields(email_template.subject, context_data, autoescape=False)

        # Merge that with the HTML templates.
        context = RequestContext(dummy_request).flatten()
        context.update(context_data)
        html = render_to_string(email_template.get_html_templates(), context, request=dummy_request)
        html, url_changes = _make_links_absolute(html, base_url)

        # Render the Text template.
        # Disable auto escaping
        context['email_format'] = 'text'
        text = render_to_string(email_template.get_text_templates(), context, request=dummy_request)
        text = _make_text_links_absolute(text, url_changes)

        return EmailContent(subject, text, html)