[elspy] Useful function for catching recipients
A.M. Kuchling
amk at amk.ca
Sun Feb 8 01:55:17 CET 2004
I've found the following function handy for checking if a given recipient is
present in the envelope-to. Perhaps it's a candidate for the elspy library?
Examples:
To reject all mail which is addressed to spamtrap at example.com.
if match_recipients(info.recipients_list, 'spamtrap', 'example.com'):
raise RejectMessage("Spam not wanted here")
To allow only 'barb' and 'amk' local parts:
info.recipients_list = match_recipients(info.recipients_list,
['barb', 'amk'], 'example.com')
--amk
def match_recipients (recipient_list, local_parts, domains):
"""(str | [str], str | [str]) : [str]
Checks whether the given recipient list contains any addresses
that combine one of the local_parts with one of the domains.
"""
if isinstance(local_parts, str):
local_parts = [local_parts]
if isinstance(domains, str):
domains = [domains]
# Construct a regex pattern: (local1|local2)@(domain1|domain2)
pattern = ('^(' + '|'.join(local_parts) + ')@(' +
'|'.join(domains) + ')$')
pattern = re.compile(pattern)
matches = []
for addr in recipient_list:
if pattern.match(addr):
matches.append(addr)
return matches
More information about the elspy-users
mailing list