aboutsummaryrefslogtreecommitdiff
path: root/lib/Sietima.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sietima.pm')
-rw-r--r--lib/Sietima.pm14
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),
});
}