Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Martin Kamerbeek
5418008419 Allow empty senderIp and default to 127.0.0.1. 2010-11-19 13:23:02 +01:00
Martin Kamerbeek
dbf935e98b Unslow bounce report generation and add some extra info as a bonus! 2010-11-12 18:02:50 +01:00
5 changed files with 74 additions and 12 deletions

View file

@ -57,13 +57,45 @@ sub session {
sub www_bounceReport {
my $self = shift;
my $session = $self->session;
my $db = $session->db;
my $i18n = WebGUI::International->new( $session, 'MailingManager' );
my $sth = $session->db->read( 'select distinct sentTo from Mailing_email where sentTo is not null' );
my $output = '<table><tr><th>'.$i18n->get('email').'</th><th>'.$i18n->get('bounce score').'</th></tr>';
while ( my ($email) = $sth->array ) {
my $score = $self->getBounceScore( $email );
$output .= "<tr><td>$email</td><td>$score</td></tr>";
my $windowSize = 10;
my $sql = <<EOSQL;
select
sentTo,
count(status),
bounceReason,
errorMessage
from
Mailing_email as t1
where
status='bounced'
and
(
(select count(*) from Mailing_email as t2 where t1.sentTo=t2.sentTo) < ?
or
(select lastUpdated from Mailing_email as t2 where t1.sentTo=t2.sentTo order by lastUpdated desc limit ?,1 )
)
group by
sentTo
order by
sentTo, lastUpdated
EOSQL
my $sth = $db->read( $sql, [ $windowSize, $windowSize - 1 ] );
my $output = '<table><tr><th>'
. join( '</th><th>',
$i18n->get('email'),
$i18n->get('bounce score'),
$i18n->get('bounce reason'),
$i18n->get('bounce message')
)
. '</th></tr>';
while ( my $values = $sth->arrayRef ) {
$output .= '<tr><td>'. join( '</td><td>', @$values ) . '</td></tr>';
}
$output .= '</table>';

View file

@ -26,7 +26,7 @@ our $I18N = {
'bounce score' => {
message => 'Bounce score',
},
'cannot cancel' => {
message => 'Mailing \'%s\' kan niet worden afgebroken.',
},
@ -100,6 +100,14 @@ our $I18N = {
'generate mailing' => {
message => 'Genereer mailing',
},
'bounce reason' => {
message => 'Laatste bounce oorzaak',
},
'bounce message' => {
message => 'Laatste bounce omschrijving',
},
};
1;

View file

@ -26,7 +26,7 @@ our $I18N = {
'bounce score' => {
message => 'Bounce score',
},
'error' => {
message => 'An error occurred',
},
@ -100,6 +100,14 @@ our $I18N = {
'generate mailing' => {
message => 'Generate mailing',
},
'bounce reason' => {
message => 'Latest bounce reason',
},
'bounce message' => {
message => 'Latest bounce message',
},
};
1;

View file

@ -34,9 +34,25 @@ renamespaceTemplates( $session );
addSpecialStateTable( $session );
addListNameColumn( $session );
addRegistrationSteps( $session );
addSentToIndex( $session );
finish($session);
#----------------------------------------------------------------------------
sub addSentToIndex {
my $session = shift;
my $db = $session->db;
print "\tAdding index to column Mailing_email.sentTo...";
my @indexes = $db->buildArray('show indexes from Mailing_email where Column_name=?',['sentTo']);
if ( @indexes == 0 ) {
$db->write('alter table Mailing_email add index(sentTo)');
}
print "Done.\n";
}
#----------------------------------------------------------------------------
sub addListNameColumn {

View file

@ -34,11 +34,9 @@ my $webguiRoot = '/data/WebGUI';
my $session = openSession( $webguiRoot, $configFile );
no warnings 'once';
*{ WebGUI::Session::Env::getIp } = sub {
return $senderIp;
return $senderIp || '127.0.0.1';
};
$session->log->warn( "IP is : [$senderIp][" .$session->env->getIp ."]");
WebGUI::MailCommand::processCommand( $session, $command, $id, $sender );
closeSession( $session );
@ -65,7 +63,7 @@ sub getCredentials {
warn "--domain parameter is required" && exit( $WRONG_USAGE ) unless $domain;
warn "--user parameter is required" && exit( $WRONG_USAGE ) unless $user;
warn "--sender parameter is required" && exit( $WRONG_USAGE ) unless $sender;
warn "--senderIp parameter is required" && exit( $WRONG_USAGE ) unless $senderIp;
#warn "--senderIp parameter is required" && exit( $WRONG_USAGE ) unless $senderIp;
my $dispatch = WebGUI::Config->new( $webguiRoot, 'mailing_dispatch.config' )
|| warn "Cannot open $webguiRoot/etc/mailing_dispatch.config" && exit( $CONFIG_ERROR );