aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2017-01-02 17:35:52 +0000
committerdakkar <dakkar@thenautilus.net>2017-01-02 17:35:52 +0000
commit66061a7ca7849ae147b12bf0aca72bbc70821099 (patch)
tree0eebf9fb02899fa1f8a96e770e507420c8a29afc /lib
parentclean all the namespaces (diff)
downloadSietima-66061a7ca7849ae147b12bf0aca72bbc70821099.tar.gz
Sietima-66061a7ca7849ae147b12bf0aca72bbc70821099.tar.bz2
Sietima-66061a7ca7849ae147b12bf0aca72bbc70821099.zip
ReplyTo can set a post address != return path
Diffstat (limited to 'lib')
-rw-r--r--lib/Sietima/Role/ReplyTo.pm19
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/Sietima/Role/ReplyTo.pm b/lib/Sietima/Role/ReplyTo.pm
index 56a8ed9..583b1de 100644
--- a/lib/Sietima/Role/ReplyTo.pm
+++ b/lib/Sietima/Role/ReplyTo.pm
@@ -2,6 +2,7 @@ package Sietima::Role::ReplyTo;
use Moo::Role;
use Sietima::Policy;
use Types::Standard qw(Bool);
+use Sietima::Types qw(Address AddressFromStr);
use List::AllUtils qw(part);
use namespace::clean;
@@ -11,6 +12,13 @@ has munge_reply_to => (
default => 0,
);
+has post_address => (
+ is => 'lazy',
+ isa => Address,
+ coerce => AddressFromStr,
+);
+sub _build_post_address($self) { $self->return_path }
+
around munge_mail => sub ($orig,$self,$mail) {
my @messages = $self->$orig($mail);
my @ret;
@@ -28,7 +36,7 @@ around munge_mail => sub ($orig,$self,$mail) {
}
elsif (not ($leave and $leave->@*)) {
# all these recipients want munging
- $m->mail->header_str_set('Reply-To',$self->return_path->address);
+ $m->mail->header_str_set('Reply-To',$self->post_address->address);
push @ret,$m;
}
else {
@@ -40,7 +48,7 @@ around munge_mail => sub ($orig,$self,$mail) {
});
my $munged_mail = Email::MIME->new($m->mail->as_string);
- $munged_mail->header_str_set('Reply-To',$self->return_path->address);
+ $munged_mail->header_str_set('Reply-To',$self->post_address->address);
my $munged_message = Sietima::Message->new({
mail => $munged_mail,
@@ -54,4 +62,11 @@ around munge_mail => sub ($orig,$self,$mail) {
return @ret;
};
+around list_addresses => sub ($orig,$self) {
+ return +{
+ $self->$orig->%*,
+ post => $self->post_address,
+ };
+};
+
1;