def handleSave(self, action):
        statusmessages = IStatusMessage(self.request)

        PostOnly(self.request)
        data, errors = self.extractData()
        if errors:
            statusmessages.add(_(u"status_parse_error",
                                 default="Failed to parse the Form."),
                               type="error")
            return False

        portal_transforms = api.portal.get_tool(name='portal_transforms')
        transformed = portal_transforms.convertTo(
            'text/html',
            data['text'],
            mimetype='text/restructured',
        )

        portal = api.portal.get()
        vars = {
            'subject': data['subject'],
            'body': transformed.getData(),
            'site_url': portal.absolute_url(),
            'site_title': portal.Title(),
        }

        html = Composer().render_template(
            data["template"],
            {},
            vars,
        )

        portal = api.portal.get()
        sender_mail = formataddr((
            portal.email_from_name,
            portal.email_from_address,
        ))

        mailSVocab = MailSenderVocabulary(self.context)
        msg = create_email_body(
            html,
            headers={"Reply-To": mailSVocab.getTerm(data['reply_to']).title})

        if not self.uids:
            self.uids = data['uids_input'].split(',')

        mailcount = 0
        failed = []
        for uid in self.uids:
            obj = api.content.get(UID=uid)

            if obj:
                if IHeldPosition.providedBy(obj):
                    obj = IHeldPosition(obj).get_person()

                recipient = IRecipientProvider(obj)()
                if recipient is None:
                    failed.append(safe_unicode(obj.Title()))
                    continue

                api.portal.send_email(recipient=recipient,
                                      sender=sender_mail,
                                      subject=data['subject'],
                                      body=msg)
                mailcount += 1

        statusmessages.add(_(u"status_mail_send",
                             default="Sent ${number} E-Mails.",
                             mapping={"number": mailcount}),
                           type="info")

        if failed:
            statusmessages.add(_(
                u"status_mails_failed",
                default="${num} contacts without email-address: ${names}",
                mapping={
                    'num': len(failed),
                    'names': u','.join(failed)
                }),
                               type="warning")

        self.request.response.redirect(self.context.absolute_url())