#!/usr/athena/bin/perl
# Run pop in batch mode since it seems to print out lines badly in interactive mode.
# This allows for the possibility of more mail comming in between invocations of pop

# Get list of message to find largest one
open(POP,"/afs/sipb/project/sipb/bin/pop -request connect -request list -request quit|") || die "Can't run pop to get message list: $! \n";

@lines = <POP>;    

close(POP);
$largest = -1;
foreach $line (@lines)
{
    chop($line);
    next if ($line =~ /^$/);
    next if ($line =~ /message/);
    @info = split(/\s+/,$line);
    $message[$info[0]] = $info[1];
    if ($largest == -1)
    {
        $largest = $info[0];
    }
    if ($info[1] > $message[$largest])
    {
        $largest = $info[0];
    }
}
if ($largest == -1)
{
    print "Exiting because we can't find largest message on server\n";
    exit;
}

print "\nLargest message is message $largest, size $message[$largest] bytes\n";

# Get To, From, Subject info for largest message to inform the user.

open(POP,"/afs/sipb/project/sipb/bin/pop -request connect -request \"top $largest 40\" -request quit|") || die "Can't run pop to get info on message $largest: $! \n";

@lines = <POP>;   

close(POP);

$to = "";
$from = "";
$subject = "";

foreach $line (@lines)
{
    chop($line);
    last if ($line =~ /^$/);
    if ($line =~ /^To:/)
    {
        $to .= "$line\n";
    }
    if ($line =~ /From:/)
    {
        $from .= "$line\n";
    }
    if ($line =~ /Subject:/)
    {
        $subject .= "$line\n";
    }
}
print "\nMessage info:\n$to$from$subject\n";

# Crude hack to get a temp file, could be better done
$user = $ENV{"USER"};
$file = "/var/tmp/pop-delete.$user.$$";
while ( -e $file)
{
    $file .= "1";
}

# See if the message is the one that the user wants to delete.
print "If you answer yes to the next question, message $largest\n";
print "will be downloaded to $file and\n";
print "removed from the server\n";
print "Do you want to do this [Nn]?> ";
$answer = <STDIN>;
if (($answer =~ /^yes$/i)|| ($answer =~ /^y$/i))
{
    print "Proceeding to remove message\n";
}
else
{
    print "Leaving message on server\n";
    exit;
}
# store message
open(OUT,">$file") || die "Can't open $file to store message: $!\n";
open(POP,"/afs/sipb/project/sipb/bin/pop -request connect -request \"retr $largest\" -request quit|") || die "Can't run pop to get info on message $largest: $! \n";
 
@lines = <POP>;   
 
close(POP);

print OUT @lines;
close(OUT);

# Remove the message
open(POP,"/afs/sipb/project/sipb/bin/pop -request connect -request \"delete $largest\" -request quit|") || die "Can't run pop to delete message: $! \n";
 
@lines = <POP>;    
 
close(POP);

print @lines;

print "Output is in $file.\n Remember to delete it when done\n";

