diff options
Diffstat (limited to 'lib/Sietima/Role/SubjectTag.pm')
-rw-r--r-- | lib/Sietima/Role/SubjectTag.pm | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/Sietima/Role/SubjectTag.pm b/lib/Sietima/Role/SubjectTag.pm index edaa598..75170d7 100644 --- a/lib/Sietima/Role/SubjectTag.pm +++ b/lib/Sietima/Role/SubjectTag.pm @@ -4,12 +4,52 @@ use Sietima::Policy; use Types::Standard qw(Str); use namespace::clean; +=head1 NAME + +Sietima::Role::SubjectTag - add a tag to messages' subjects + +=head1 SYNOPSIS + + my $sietima = Sietima->with_traits('SubjectTag')->new({ + %args, + subject_tag => 'foo', + }); + +=head1 DESCRIPTION + +A L<< C<Sietima> >> list with this role applied will prepend the given +tag to every outgoing message's C<Subject:> header. + +=head1 ATTRIBUTES + +=head2 C<subject_tag> + +Required string. This string, enclosed by square brackets, will be +prepended to the C<Subject:> header of outgoing messages. For example, +the code in the L</synopsis> would cause an incoming message with +subject "new stuff" to be sent out with subject "[foo] new stuff". + +If the incoming message's C<Subject:> header already contains the tag, +the header will not be modified. This prevents getting subjects like +"[foo] Re: [foo] Re: [foo] new stuff". + +=cut + has subject_tag => ( is => 'ro', isa => Str, required => 1, ); +=head1 MODIFIED METHODS + +=head2 C<munge_mail> + +The subject of the incoming email is modified to add the tag (unless +it's already there). The email is then processed normally. + +=cut + around munge_mail => sub ($orig,$self,$mail) { my $tag = '['.$self->subject_tag.']'; my $subject = $mail->header_str('Subject'); |