Commit f17e1946 authored by jani@hynda.mysql.fi's avatar jani@hynda.mysql.fi
Browse files

Made new version of mail_to_db.pl

parent 1cef60bf
Loading
Loading
Loading
Loading
+44 −21
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ use DBI;
use Getopt::Long;

$| = 1;
$VER = "2.4";
$VER = "2.5";

$opt_help          = 0;
$opt_version       = 0;
@@ -152,19 +152,41 @@ sub main
  $dbh->disconnect if (!$opt_test);

  $ignored = ($mail_no_from_f + $mail_no_subject_f + $mail_no_txt_f +
	      $mail_too_big + $mail_duplicates);
  print "Mails inserted:\t\t\t$mail_inserted\n";
  print "Mails ignored:\t\t\t$ignored\n";
  print "Mails without \"From:\" -field:\t$mail_no_from_f\n";
  print "Mails without message:\t\t$mail_no_txt_f\n";
  print "Mails without subject:\t\t$mail_no_subject_f\n";
  print "Too big mails (> $opt_max_mail_size):\t$mail_too_big\n";
  print "Duplicate mails:\t\t$mail_duplicates\n";
  print "Forwarded mails:\t\t$mail_forwarded\n";
  print "Total number of mails:\t\t"; 
	      $mail_too_big + $mail_duplicates + $mail_fixed);
  print "Mails inserted:\t\t\t\t\t$mail_inserted\n\n";
  if ($ignored)
  {
    print "Ignored mails\n";
    print "-------------\n";
    $mail_no_from_f ?
      print "Reason: mail without \"From:\" -field:\t\t$mail_no_from_f\n" :
      print "";
    $mail_no_txt_f ?
      print "Reason: mail without message:\t\t\t$mail_no_txt_f\n" :
      print "";
    $mail_no_subject_f ?
      print "Reason: mail without subject:\t\t\t$mail_no_subject_f\n" :
      print "";
    $mail_too_big ?
      print "Reason: mail too big (over $opt_max_mail_size bytes):\t$mail_too_big\n" :
      print "";
    $mail_duplicates ?
      print "Reason: duplicate mail, or in db already:\t$mail_duplicates\n" :
      print "";
    $mail_fixed ?
      print "Reason: mail was an unsubscribe - mail:\t\t$mail_fixed\n" :
      print "";
    print "                                               ";
    print "=" . "=" x length("$ignored") . "=\n";
    print "Total number of ignored mails:\t\t\t$ignored\n\n";
  }
  print "Total number of mails:\t\t\t\t"; 
  print $mail_inserted + $ignored;
  print "\n";
  print "Mails with unsubscribe removed:\t$mail_fixed\n";
  print " (OK: ";
  print sprintf("%.1f", (($mail_inserted / ($mail_inserted+$ignored)) * 100));
  print "% Ignored: ";
  print sprintf("%.1f", (($ignored / ($mail_inserted + $ignored)) * 100));
  print "%)\n";
  exit(0);
}

@@ -269,7 +291,8 @@ sub process_mail_file
      $values{$type} .= "\n" . $_;
      $check--;
    }
    elsif (/^From .* \d\d:\d\d:\d\d\s\d\d\d\d$/)
    elsif (/^From .* \d\d:\d\d:\d\d\s\d\d\d\d$/ ||
           /^From .* \d\d\d\d\s\d\d:\d\d:\d\d/)
    {
      $values{'hash'} = checksum("$values{'message'}");
      update_table($dbh, $file_name, \%values);