def get_header_info(self, fields, request, context, from_addr=None, to_addr=None, subject=None): """Return header info header info is a dictionary Keyword arguments: request -- (optional) alternate request object to use """ portal = getToolByName(context, 'portal_url').getPortalObject() utils = getToolByName(context, 'plone_utils') (to, from_addr, reply) = self.get_addresses(fields, request, context) subject = self.get_subject(fields, request, context) headerinfo = OrderedDict() headerinfo['To'] = self.secure_header_line(to) headerinfo['From'] = self.secure_header_line(from_addr) if reply: headerinfo['Reply-To'] = self.secure_header_line(reply) # transform subject into mail header encoded string email_charset = portal.getProperty('email_charset', 'utf-8') if not isinstance(subject, unicode): site_charset = utils.getSiteEncoding() subject = unicode(subject, site_charset, 'replace') msgSubject = self.secure_header_line( subject).encode(email_charset, 'replace') msgSubject = str(Header(msgSubject, email_charset)) headerinfo['Subject'] = msgSubject # CC cc_recips = filter(None, self.cc_recipients) if hasattr(self, 'ccOverride') and self.ccOverride: _cc = get_expression(context, self.ccOverride, fields=fields) if _cc: cc_recips = _cc if cc_recips: headerinfo['Cc'] = format_addresses(cc_recips) # BCC bcc_recips = filter(None, self.bcc_recipients) if hasattr(self, 'bccOverride') and self.bccOverride: _bcc = get_expression(context, self.bccOverride, fields=fields) if _bcc: bcc_recips = _bcc if bcc_recips: headerinfo['Bcc'] = format_addresses(bcc_recips) for key in getattr(self, 'xinfo_headers', []): headerinfo['X-{0}'.format(key)] = self.secure_header_line( request.get(key, 'MISSING')) return headerinfo
def get_addresses( self, fields, request, context, from_addr=None, to_addr=None ): """ Return addresses """ # get Reply-To reply_addr = None if hasattr(self, 'replyto_field'): reply_addr = fields.get(self.replyto_field, None) # Get From address portal_addr = self.get_portal_email_address(context) from_addr = from_addr or portal_addr if hasattr(self, 'senderOverride') and self.senderOverride: _from = get_expression(context, self.senderOverride, fields=fields) if _from: from_addr = _from # Get To address and full name recip_email = None if hasattr(self, 'to_field') and self.to_field: recip_email = fields.get(self.to_field, None) if not recip_email: if self.recipient_email != '': recip_email = self.recipient_email if hasattr(self, 'recipientOverride') and self.recipientOverride: _recip = get_expression( context, self.recipientOverride, fields=fields ) if _recip: recip_email = _recip to = None if to_addr: to = format_addresses(to_addr) elif recip_email: to = format_addresses( recip_email, self.recipient_name ) else: # Use owner adress or fall back to portal email_from_address. to = formataddr(self.get_owner_info(context)) assert(to) return (to, from_addr, reply_addr)
def get_header_info(self, fields, request, context, from_addr=None, to_addr=None, subject=None): """Return header info header info is a dictionary Keyword arguments: request -- (optional) alternate request object to use """ portal = getToolByName(context, "portal_url").getPortalObject() utils = getToolByName(context, "plone_utils") (to, from_addr, reply) = self.get_addresses(fields, request, context) subject = self.get_subject(fields, request, context) headerinfo = OrderedDict() headerinfo["To"] = self.secure_header_line(to) headerinfo["From"] = self.secure_header_line(from_addr) if reply: headerinfo["Reply-To"] = self.secure_header_line(reply) # transform subject into mail header encoded string email_charset = portal.getProperty("email_charset", "utf-8") if not isinstance(subject, unicode): site_charset = utils.getSiteEncoding() subject = unicode(subject, site_charset, "replace") msgSubject = self.secure_header_line(subject).encode(email_charset, "replace") msgSubject = str(Header(msgSubject, email_charset)) headerinfo["Subject"] = msgSubject # CC cc_recips = filter(None, self.cc_recipients) if hasattr(self, "ccOverride") and self.ccOverride: _cc = get_expression(context, self.ccOverride, fields=fields) if _cc: cc_recips = _cc if cc_recips: headerinfo["Cc"] = format_addresses(cc_recips) # BCC bcc_recips = filter(None, self.bcc_recipients) if hasattr(self, "bccOverride") and self.bccOverride: _bcc = get_expression(context, self.bccOverride, fields=fields) if _bcc: bcc_recips = _bcc if bcc_recips: headerinfo["Bcc"] = format_addresses(bcc_recips) for key in getattr(self, "xinfo_headers", []): headerinfo["X-{0}".format(key)] = self.secure_header_line(request.get(key, "MISSING")) return headerinfo
def get_addresses(self, fields, request, context, from_addr=None, to_addr=None): """ Return addresses """ pprops = getToolByName(context, 'portal_properties') site_props = getToolByName(pprops, 'site_properties') portal = getToolByName(context, 'portal_url').getPortalObject() registry = getUtility(IRegistry) # get Reply-To reply_addr = None if hasattr(self, 'replyto_field'): reply_addr = fields.get(self.replyto_field, None) # Get From address from_addr = (from_addr or site_props.getProperty('email_from_address') or portal.getProperty('email_from_address') or registry.get('plone.email_from_address')) if hasattr(self, 'senderOverride') and self.senderOverride: _from = get_expression(context, self.senderOverride, fields=fields) if _from: from_addr = _from # Get To address and full name recip_email = None if hasattr(self, 'to_field') and self.to_field: recip_email = fields.get(self.to_field, None) if not recip_email: if self.recipient_email != '': recip_email = self.recipient_email if hasattr(self, 'recipientOverride') and self.recipientOverride: _recip = get_expression( context, self.recipientOverride, fields=fields) if _recip: recip_email = _recip to = None if to_addr: to = format_addresses(to_addr) elif recip_email: to = format_addresses(recip_email, self.recipient_name) else: # Use owner adress or fall back to portal email_from_address. to = formataddr(self.get_owner_info(context)) assert (to) return (to, from_addr, reply_addr)
def get_header_info(self, fields, request, context, from_addr=None, to_addr=None, subject=None): """Return header info. header info is a dictionary Keyword arguments: request -- (optional) alternate request object to use """ (to, from_addr, reply) = self.get_addresses(fields, request, context) headerinfo = OrderedDict() headerinfo["To"] = self.secure_header_line(to) headerinfo["From"] = self.secure_header_line(from_addr) if reply: headerinfo["Reply-To"] = self.secure_header_line(reply) headerinfo["Subject"] = self.get_subject(fields, request, context) # CC if isinstance(self.cc_recipients, six.string_types): cc_recips = self.cc_recipients else: cc_recips = [_f for _f in self.cc_recipients if _f] if hasattr(self, "ccOverride") and self.ccOverride: _cc = get_expression(context, self.ccOverride, fields=fields) if _cc: cc_recips = _cc if cc_recips: headerinfo["Cc"] = format_addresses(cc_recips) # BCC if isinstance(self.bcc_recipients, six.string_types): bcc_recips = self.bcc_recipients else: bcc_recips = [_f for _f in self.bcc_recipients if _f] if hasattr(self, "bccOverride") and self.bccOverride: _bcc = get_expression(context, self.bccOverride, fields=fields) if _bcc: bcc_recips = _bcc if bcc_recips: headerinfo["Bcc"] = format_addresses(bcc_recips) for key in getattr(self, "xinfo_headers", []): headerinfo["X-{0}".format(key)] = self.secure_header_line( request.get(key, "MISSING")) return headerinfo
def get_addresses(self, fields, request, context, from_addr=None, to_addr=None): """Return addresses """ pprops = getToolByName(context, 'portal_properties') site_props = getToolByName(pprops, 'site_properties') portal = getToolByName(context, 'portal_url').getPortalObject() # get Reply-To reply_addr = None if hasattr(self, 'replyto_field'): reply_addr = fields.get(self.replyto_field, None) # Get From address from_addr = (from_addr or site_props.getProperty('email_from_address') or portal.getProperty('email_from_address')) if hasattr(self, 'senderOverride') and self.senderOverride: _from = get_expression(context, self.senderOverride, fields=fields) if _from: from_addr = _from # Get To address and full name recip_email = None if hasattr(self, 'to_field') and self.to_field: recip_email = fields.get(self.to_field, None) if not recip_email: recip_email = self.recipient_email if hasattr(self, 'recipientOverride') and self.recipientOverride: _recip = get_expression(context, self.recipientOverride, fields=fields) if _recip: recip_email = _recip to = None if to_addr: to = format_addresses(to_addr) elif recip_email: to = format_addresses(recip_email, self.recipient_name) else: # Use owner adress or fall back to portal email_from_address. to = formataddr(self.get_owner_info(context)) assert (to) return (to, from_addr, reply_addr)
def get_header_info(self, fields, request, context, from_addr=None, to_addr=None, subject=None): """Return header info header info is a dictionary Keyword arguments: request -- (optional) alternate request object to use """ (to, from_addr, reply) = self.get_addresses(fields, request, context) headerinfo = OrderedDict() headerinfo['To'] = self.secure_header_line(to) headerinfo['From'] = self.secure_header_line(from_addr) if reply: headerinfo['Reply-To'] = self.secure_header_line(reply) headerinfo['Subject'] = self.get_subject(fields, request, context) # CC cc_recips = filter(None, self.cc_recipients) if hasattr(self, 'ccOverride') and self.ccOverride: _cc = get_expression(context, self.ccOverride, fields=fields) if _cc: cc_recips = _cc if cc_recips: headerinfo['Cc'] = format_addresses(cc_recips) # BCC bcc_recips = filter(None, self.bcc_recipients) if hasattr(self, 'bccOverride') and self.bccOverride: _bcc = get_expression(context, self.bccOverride, fields=fields) if _bcc: bcc_recips = _bcc if bcc_recips: headerinfo['Bcc'] = format_addresses(bcc_recips) for key in getattr(self, 'xinfo_headers', []): headerinfo['X-{0}'.format(key)] = self.secure_header_line( request.get(key, 'MISSING')) return headerinfo
def get_header_info(self, fields, request, context, from_addr=None, to_addr=None, subject=None): """Return header info header info is a dictionary Keyword arguments: request -- (optional) alternate request object to use """ portal = getToolByName(context, 'portal_url').getPortalObject() utils = getToolByName(context, 'plone_utils') (to, from_addr, reply) = self.get_addresses(fields, request, context) subject = self.get_subject(fields, request, context) headerinfo = OrderedDict() headerinfo['To'] = self.secure_header_line(to) headerinfo['From'] = self.secure_header_line(from_addr) if reply: headerinfo['Reply-To'] = self.secure_header_line(reply) # transform subject into mail header encoded string email_charset = portal.getProperty('email_charset', 'utf-8') if not isinstance(subject, unicode): site_charset = utils.getSiteEncoding() subject = unicode(subject, site_charset, 'replace') msgSubject = self.secure_header_line(subject).encode( email_charset, 'replace') msgSubject = str(Header(msgSubject, email_charset)) headerinfo['Subject'] = msgSubject # CC cc_recips = filter(None, self.cc_recipients) if hasattr(self, 'ccOverride') and self.ccOverride: _cc = get_expression(context, self.ccOverride, fields=fields) if _cc: cc_recips = _cc if cc_recips: headerinfo['Cc'] = format_addresses(cc_recips) # BCC bcc_recips = filter(None, self.bcc_recipients) if hasattr(self, 'bccOverride') and self.bccOverride: _bcc = get_expression(context, self.bccOverride, fields=fields) if _bcc: bcc_recips = _bcc if bcc_recips: headerinfo['Bcc'] = format_addresses(bcc_recips) for key in getattr(self, 'xinfo_headers', []): headerinfo['X-{0}'.format(key)] = self.secure_header_line( request.get(key, 'MISSING')) return headerinfo