def __init__(self, context, profile, request): from karl.mail import Message message = Message() message["From"] = "Karl <*****@*****.**>" message["To"] = "Andy Ex <*****@*****.**>" message["Subject"] = "Testing" message.set_payload("Test email", "UTF-8") self.message = message
def __call__(self): context, request = self.context, self.request api = AdminTemplateAPI(context, request, 'Admin UI: Send Email') admin_email = get_setting(context, 'admin_email') system_name = get_setting(context, 'system_name') profiles = find_profiles(context) admin = profiles[authenticated_userid(request)] from_emails = [ ('self', '%s <%s>' % (admin.title, admin.email)), ('admin', '%s Administrator <%s>' % (system_name, admin_email)), ] if 'send_email' in request.params: mailer = getUtility(IMailDelivery) group = request.params['to_group'] users = find_users(context) search = ICatalogSearch(context) count, docids, resolver = search(interfaces=[IProfile]) n = 0 for docid in docids: profile = resolver(docid) userid = profile.__name__ if group and not users.member_of_group(userid, group): continue message = Message() if request.params['from_email'] == 'self': message['From'] = from_emails[0][1] message_from = admin.email else: message['From'] = from_emails[1][1] message_from = admin_email message['To'] = '%s <%s>' % (profile.title, profile.email) message['Subject'] = request.params['subject'] body = u'<html><body>%s</body></html>' % ( request.params['text'] ) message.set_payload(body.encode('UTF-8'), 'UTF-8') message.set_type('text/html') mailer.send(message_from, [profile.email], message) n += 1 status_message = "Sent message to %d users." % n redirect_to = model_url(context, request, 'admin.html', query=dict(status_message=status_message)) return HTTPFound(location=redirect_to) return render_template_to_response( 'templates/admin/email_users.pt', api=api, menu=_menu_macro(), to_groups = self.to_groups, from_emails=from_emails, )
def message(self): if self._message is not None: return self._message community = self._community request = self.request profile = self.profile model = self._model community_href = model_url(community, request) model_href = model_url(model, request) manage_preferences_href = model_url(profile, request) system_name = get_setting(self.context, "system_name", "KARL") system_email_domain = get_setting(self.context, "system_email_domain") body_template = get_template(self._template) from_name = "%s | %s" % (self.creator.title, system_name) msg = Message() msg["From"] = "%s <%s>" % (from_name, self.mfrom) msg["To"] = "%s <%s>" % (community.title, profile.email) msg["Subject"] = self._subject body = body_template( context=self.context, community=community, community_href=community_href, model=model, model_href=model_href, manage_preferences_href=manage_preferences_href, profile=profile, creator=self.creator, content_type=self._content_type_name, digest=self.digest, alert=self, ) if self.digest: # Only interested in body for digest html = document_fromstring(body) body_element = html.cssselect('body')[0] span = etree.Element("span", nsmap=body_element.nsmap) span[:] = body_element[:] # Copy all body elements to an empty span body = etree.tostring(span, pretty_print=True) if isinstance(body, unicode): body = body.encode('utf-8') msg.set_payload(body, 'utf-8') msg.set_type("text/html") self._message = msg return msg