my $messages = 1;
for (@msgs) {
- my $msg_date = pop @{$_};
- my $subject = pop @{$_};
+ my $msg_date = pop @{$_};
+ my $link_date = $msg_date;
+ my $subject = pop @{$_};
if ($date eq substr ($msg_date, 0, 10)) {
$msg_date = b font {-color => 'green'}, SQLDatetime2UnixDatetime $msg_date;
-cellspacing => 2,
-border => 0,
-width => '100%'};
- my $msg_nbr = $messages;
print
Tr [
td {-class => 'msgnbr',
td {-class => 'subject',
-valign => 'middle',
-bgcolor => '#ffffff'},
- a {-href => "display.cgi?sender=$sender;msg_nbr=$msg_nbr"}, $subject,
+ a {-href => "display.cgi?sender=$sender;msg_date=$link_date"}, $subject,
td {-class => 'date',
-width => '150',
-valign => 'middle'}, $msg_date
my $userid = cookie('MAPSUser');
my $sender = param('sender');
-my $msg_nbr = param('msg_nbr');
+my $msg_date = param('msg_date');
my $table_name = 'message';
sub ParseEmail(@) {
} # ParseEmail
sub Body($) {
- my ($count) = @_;
+ my ($date) = @_;
- $count ||= 1;
+ # Find unique message using $date
+ my $handle = FindEmail $sender, $date;
- my $handle = FindEmail $sender;
-
- my ($userid, $sender, $subject, $timestamp, $message);
-
- # Need to handle multiple messages
- for (my $i = 0; $i < $count; $i++) {
- ($userid, $sender, $subject, $timestamp, $message) = GetEmail $handle;
- } # for
+ my ($userid, $sender, $subject, $timestamp, $message) = GetEmail $handle;
my $parser = MIME::Parser->new();
- $parser->output_to_core (1);
+ $parser->output_to_core(1);
my $entity = $parser->parse_data ($message);
-bgcolor => "#ece9d8",
-width => "100%"}) . "\n";
- foreach (keys (%header)) {
+ for (keys (%header)) {
next if /base64/;
- my $str = decode_mimewords ($header{$_});
+ my $str = decode_mimewords($header{$_});
print Tr ([
th ({-align => "right",
-width => "8%"}, "$_:") . "\n" .
td ({-bgcolor => "white"}, $str)
]);
- } # if
+ } # for
print end_table;
print "</td></tr>";
} # for
} elsif ($part->mime_type eq 'multipart/related') {
# Sometimes parts are 'multipart/relative'...
- $part->print_body;
+ $part->print_body;
} else {
if ($part->mime_type =~ /text/) {
my $encoding = '';
SetContext($userid);
NavigationBar($userid);
-Body($msg_nbr);
+Body($msg_date);
Footing($table_name);
return $row[0];
} # Encrypt
-sub FindEmail(;$) {
- my ($sender) = @_;
+sub FindEmail(;$$) {
+ my ($sender, $date) = @_;
my $statement;
- if (!defined $sender || $sender eq '') {
- $statement = "select * from email where userid = '$userid'";
- } else {
- $statement = "select * from email where userid = '$userid' and sender = '$sender'";
- } # if
+ $sender //= '';
+ $date //= '';
+
+ $statement = "select * from email where userid = '$userid'";
+
+ # Add conditions if present
+ $statement .= " and sender = '$sender'" if $sender;
+ $statement .= " and timestamp = '$date'" if $date;
my $sth = $DB->prepare($statement)
or DBError('FindEmail: Unable to prepare statement', $statement);