def _sendMessage(self): """Send en email message to found email address""" subject = self._form.get('subject') message = self._form.get('message') results = self.search_results() plone_utils = getToolByName(self.context, 'plone_utils') if not subject or not message: plone_utils.addPortalMessage(_('send_message_missing_data', default=u"You must provide a subject and a text message " u"for the mail to be sent"), type="error") return False results = [x['user_email'] for x in results if x['user_email']] if not results: plone_utils.addPortalMessage(_('no_users_found', default=u"Your search doesn't find any valid email address"), type="error") return False mail_host = getToolByName(self.context, 'MailHost') mfrom = getToolByName(self.context, 'portal_url').getPortalObject().getProperty('email_from_address') if not mfrom: plone_utils.addPortalMessage(_('mail_configuration_error', default=u"Cannot send messages. Check mailhost configuration."), type="error") return False for email in results: mail_host.secureSend(message, mto=email, mfrom=mfrom, subject=subject) plone_utils.addPortalMessage(_('mail_sent', default=u"Message sent to $count recipients", mapping={'count': len(results)}), type="info") return True
def search_results(self): """Search results""" self._prepare_interval() portal = getToolByName(self.context, 'portal_url').getPortalObject() try: return self._sole_query(portal.getId()) except ComponentLookupError: self.request.response.redirect("%s/%s" % (portal.absolute_url(), self.__name__)) portal.plone_utils.addPortalMessage(_('component_lookup_error', default=u"Could not connect to the database engine. " u"Please check your configuration"), type="error") return []