'Based off of django\'s but handles html and plain-text emails.'

def save(self, domain_override=None, subject_template_name='registration/password_reset_subject.txt', text_template=None, html_template=None, use_https=False, token_generator=default_token_generator, from_email=None, request=None):

    users = User.objects.filter(email__iexact=self.cleaned_data['email'], is_active=True)
    for user in users:
        if (not domain_override):
            current_site = get_current_site(request)
            site_name = current_site.name
            domain = current_site.domain
        else:
            site_name = domain = domain_override
        c = {'email': user.email, 'domain': domain, 'site_name': site_name, 'uid': int_to_base36(user.id), 'user': user, 'token': token_generator.make_token(user), 'protocol': ((use_https and 'https') or 'http')}
        subject = email_utils.render_email(subject_template_name, c)
        subject = ''.join(subject.splitlines())
        @email_utils.safe_translation
        def _make_mail(locale):
            mail = email_utils.make_mail(subject=subject, text_template=text_template, html_template=html_template, context_vars=c, from_email=from_email, to_email=user.email)
            return mail
        if request:
            locale = request.LANGUAGE_CODE
        else:
            locale = settings.WIKI_DEFAULT_LANGUAGE
        email_utils.send_messages([_make_mail(locale)])
