def _render(template_text, message): template = jinja2.Template(template_text) headers = { name.lower().replace('-', '_'): i18n.get_header_value(message, name) for name in message.keys() } date = parsedate_to_datetime(i18n.get_header_value(message, 'date')) headers['date'] = date return template.render(message=message, **headers)
def _get_dest_mailbox(self, message_id, message): header_value = i18n.get_header_value(message, self._header) match = self._dest_mailbox_regex.search(header_value) if not match: raise ValueError('Could not determine destination mailbox from ' '{!r} header {!r} with regex {!r}'.format( self._header, header_value, self._dest_mailbox_regex)) self._log.debug( '%s %r header %r matched regex %r with %r', message_id, self._header, header_value, self._dest_mailbox_regex.pattern, match.groups(), ) self._log.debug( '%s using group %s', message_id, self._dest_mailbox_regex_group, ) return '{}{}'.format( self._dest_mailbox_base, match.groups()[self._dest_mailbox_regex_group], )
def report(self, conn, src_mailbox, message_id, message): self._log.info( '%s (%s) to %s', message_id, i18n.get_header_value(message, 'subject'), self._get_dest_mailbox(message_id, message), )
def check(self, message): date = parsedate_to_datetime(i18n.get_header_value(message, 'date')) if self._age: time_limit = datetime.now() - timedelta(days=self._age) if date <= time_limit: return True else: return 0
def check(self, message): date = parsedate_to_datetime(i18n.get_header_value(message, 'date')) # RFC2822 dates ending with '-0000' create timezone naive datetimes # so we need to manually set their timezone so we can compare them # with TZ aware datetimes. if date.tzinfo is None: date = date.replace(tzinfo=timezone.utc) if self._age: time_limit = datetime.now(timezone.utc) - timedelta(days=self._age) if date <= time_limit: return True else: return 0
def check(self, message): header_value = i18n.get_header_value(message, self._header_name) return self._check_rule(header_value)
def report(self, conn, mailbox_name, message_id, message): self._log.info('%s (%s)', message_id, i18n.get_header_value(message, 'subject'))