Skip addresses that exceed bounce score threshold.

This commit is contained in:
Martin Kamerbeek 2010-05-20 17:57:36 +02:00
parent 2e27fd5c21
commit 1167a11ba7
4 changed files with 31 additions and 1 deletions

View file

@ -85,6 +85,11 @@ sub www_settings {
value => $setting->get( 'newsletterReturnDomain' ),
label => 'Newsletter domain name',
);
$f->integer(
name => 'newsletterBounceScoreThreshold',
value => $setting->get( 'newsletterBounceScoreThreshold' ),
label => 'Bounce score threshold',
);
$f->submit;
return $self->getAdminConsole->render($f->print, 'Newsletter settings')
@ -98,6 +103,7 @@ sub www_settingsSave {
my ($setting, $form) = $session->quick( 'setting', 'form' );
$setting->set( 'newsletterReturnDomain', $form->get('newsletterReturnDomain') );
$setting->set( 'newsletterBounceScoreThreshold', $form->integer('newsletterBounceScoreThreshold') );
return $self->www_settings;
}

View file

@ -5,6 +5,17 @@ use warnings;
use WebGUI::Mailing::Admin;
sub bounceScoreOk {
my $self = shift;
my $address = shift;
my $setting = $self->session->setting;
my $threshold = $setting->get('newsletterBounceScoreThreshold');
return 1 unless $threshold;
return $self->getBounceScore( $address ) < $threshold;
}
sub getBounceScore {
my $self = shift;
my $address = shift;

View file

@ -163,6 +163,18 @@ sub send {
return;
}
# Check bounce score
my $bounceScoreOk = WebGUI::Mailing::Bounce->new( $session )->bounceScoreOk( $to );
if ( !$self->get( 'isTest' ) && !$bounceScoreOk ) {
$self->update( {
status => 'skipped',
sendDate => time,
errorMessage => "Bounce score for $to too high",
} );
return;
}
# Fetch subject
my $subject = $asset->getSubject( $configuration );

View file

@ -111,7 +111,8 @@ sub installNewsletterSettings {
print "\tInstalling newsletter setting slots...";
$setting->add( 'newsletterReturnDomain', undef ) unless $setting->has( 'newsletterReturnDomain' );
$setting->add( 'newsletterReturnDomain', undef ) unless $setting->has( 'newsletterReturnDomain' );
$setting->add( 'newsletterBounceScoreThreshold', 0 ) unless $setting->has( 'newsletterBounceScoreThreshold' );
print "Done.\n";
}