aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App.pm')
-rw-r--r--perllib/FixMyStreet/App.pm10
1 files changed, 10 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App.pm b/perllib/FixMyStreet/App.pm
index 205732caf..cf766348f 100644
--- a/perllib/FixMyStreet/App.pm
+++ b/perllib/FixMyStreet/App.pm
@@ -316,6 +316,8 @@ sub send_email {
$email->header_set( ucfirst($_), $vars->{$_} )
for grep { $vars->{$_} } qw( to from subject);
+ return if $c->is_abuser( $email->header('To') );
+
$email->header_set( 'Message-ID', sprintf('<fms-%s-%s@%s>',
time(), unpack('h*', random_bytes(5, 1)), $c->config->{EMAIL_DOMAIN}
) );
@@ -340,6 +342,8 @@ sub send_email {
sub send_email_cron {
my ( $c, $params, $env_from, $env_to, $nomail ) = @_;
+ return 1 if $c->is_abuser( $env_to );
+
$params->{'Message-ID'} = sprintf('<fms-cron-%s-%s@mysociety.org>', time(),
unpack('h*', random_bytes(5, 1))
);
@@ -482,6 +486,12 @@ sub get_photo_params {
return $photo;
}
+sub is_abuser {
+ my ($c, $email) = @_;
+ my ($domain) = $email =~ m{ @ (.*) \z }x;
+ return $c->model('DB::Abuse')->search( { email => [ $email, $domain ] } )->first;
+}
+
=head1 SEE ALSO
L<FixMyStreet::App::Controller::Root>, L<Catalyst>