diff options
author | dakkar <dakkar@thenautilus.net> | 2016-06-17 18:06:36 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2016-06-17 18:06:36 +0100 |
commit | 8399a72d9b3561616e79d8d389a32cbc022b96fe (patch) | |
tree | c90e01f0011929665d30615630bf2a50eb0bf8b3 /lib/Sietima/Role/SubscriberOnly/Moderate.pm | |
parent | 'bag' is in Test2::Suite 0.000032! (diff) | |
download | Sietima-8399a72d9b3561616e79d8d389a32cbc022b96fe.tar.gz Sietima-8399a72d9b3561616e79d8d389a32cbc022b96fe.tar.bz2 Sietima-8399a72d9b3561616e79d8d389a32cbc022b96fe.zip |
role: moderate mail from non-subscribers
Diffstat (limited to 'lib/Sietima/Role/SubscriberOnly/Moderate.pm')
-rw-r--r-- | lib/Sietima/Role/SubscriberOnly/Moderate.pm | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/Sietima/Role/SubscriberOnly/Moderate.pm b/lib/Sietima/Role/SubscriberOnly/Moderate.pm new file mode 100644 index 0000000..107a843 --- /dev/null +++ b/lib/Sietima/Role/SubscriberOnly/Moderate.pm @@ -0,0 +1,39 @@ +package Sietima::Role::SubscriberOnly::Moderate; +use strict; +use warnings; +use 5.020; +use Moo::Role; +use Email::Stuffer; +use Email::MIME; +use namespace::clean; + +with 'Sietima::Role::SubscriberOnly', + 'Sietima::Role::WithMailStore', + 'Sietima::Role::WithAdmin'; + +sub munge_mail_from_non_subscriber { + my ($self,$mail) = @_; + + my $id = $self->mail_store->store($mail,'moderation'); + my $notice = Email::Stuffer + ->from($self->return_path) + ->to($self->admin) + ->subject("Message held for moderation - ".$mail->header_str('subject')) + ->text_body("Use id $id to refer to it") + ->attach($mail->as_string, content_type => 'message/rfc822'); + $self->transport->send($notice->email,{ + from => $self->return_path, + to => [ $self->admin ], + }); + return; +} + +sub resume { + my ($self,$mail_id) = @_; + + my $mail = $self->mail_store->retrieve_by_id($mail_id); + local $Sietima::Role::SubscriberOnly::let_it_pass=1; + $self->handle_mail($mail); +} + +1; |