@ -260,14 +260,22 @@ class Email(object):
@classmethod
@classmethod
def resolve_destination ( cls , localpart , domain_name , ignore_forward_keep = False ) :
def resolve_destination ( cls , localpart , domain_name , ignore_forward_keep = False ) :
localpart_maybe_split = localpart
localpart_stripped = None
stripped_alias = None
if os . environ . get ( ' RECIPIENT_DELIMITER ' ) in localpart :
if os . environ . get ( ' RECIPIENT_DELIMITER ' ) in localpart :
localpart_maybe_split = localpart . rsplit ( os . environ . get ( ' RECIPIENT_DELIMITER ' ) , 1 ) [ 0 ]
localpart_ stripped = localpart . rsplit ( os . environ . get ( ' RECIPIENT_DELIMITER ' ) , 1 ) [ 0 ]
alias = Alias . resolve ( localpart_maybe_split , domain_name )
pure_alias = Alias . resolve ( localpart , domain_name )
pure_alias_has_wildcard = pure_alias and ' % ' in pure_alias . email and pure_alias . wildcard
stripped_alias = Alias . resolve ( localpart_stripped , domain_name )
if alias :
if pure_alias and not pure_alias_has_wildcard :
return alias . destination
return pure_alias . destination
elif stripped_alias :
return stripped_alias . destination
elif pure_alias :
return pure_alias . destination
user = User . query . get ( ' {} @ {} ' . format ( localpart , domain_name ) )
user = User . query . get ( ' {} @ {} ' . format ( localpart , domain_name ) )
if not user and localpart_stripped :
if not user and localpart_stripped :