diff options
Diffstat (limited to 'lib/Sietima.pm')
-rw-r--r-- | lib/Sietima.pm | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/Sietima.pm b/lib/Sietima.pm index fbf0566..1e463ec 100644 --- a/lib/Sietima.pm +++ b/lib/Sietima.pm @@ -5,7 +5,7 @@ use Types::Standard qw(ArrayRef Object FileHandle Maybe); use Type::Params qw(compile); use Sietima::Types qw(Address AddressFromStr EmailMIME Message - Subscriber SubscriberFromAddress SubscriberFromStr + Subscriber SubscriberFromAddress SubscriberFromStr SubscriberFromHashRef Transport); use Sietima::Message; use Sietima::Subscriber; @@ -27,6 +27,7 @@ my $subscribers_array = ArrayRef[ Subscriber->plus_coercions( SubscriberFromAddress, SubscriberFromStr, + SubscriberFromHashRef, ) ]; has subscribers => ( @@ -53,6 +54,13 @@ sub handle_mail { return; } +sub addresses_to_send_to { + state $check = compile(Object,EmailMIME); + my ($self,$incoming_mail) = $check->(@_); + + return [ map { $_->address } @{$self->subscribers} ]; +} + sub munge_mail { state $check = compile(Object,EmailMIME); my ($self,$incoming_mail) = $check->(@_); @@ -60,9 +68,7 @@ sub munge_mail { return Sietima::Message->new({ mail => $incoming_mail, from => $self->return_path, - to => [ - map { $_->address } @{$self->subscribers} - ], + to => $self->addresses_to_send_to($incoming_mail), }); } |