2 ################################################################################
4 # File: $RCSfile: display.cgi,v $
5 # Revision: $Revision: 1.1 $
6 # Description: Displays an email message
7 # Author: Andrew@DeFaria.com
8 # Created: Fri Nov 29 14:17:21 2002
9 # Modified: $Date: 2013/06/12 14:05:47 $
12 # (c) Copyright 2000-2006, Andrew@DeFaria.com, all rights reserved.
14 ################################################################################
19 $0 = $FindBin::Script;
21 use lib $FindBin::Bin;
26 use CGI qw/:standard *table/;
27 use CGI::Carp "fatalsToBrowser";
31 use MIME::Words qw(:all);
33 my $userid = cookie ("MAPSUser");
34 my $sender = param ("sender");
35 my $msg_nbr = param ("msg_nbr");
36 my $table_name = "message";
43 # First output the header information. Note we'll skip uninteresting stuff
45 last if ($_ eq "" || $_ eq "\cM");
51 if (/^from:\s*(.*)/i) {
53 } elsif (/^subject:\s*(.*)/i) {
54 $header{Subject} = $1;
55 } elsif (/^date:\s*(.*)/i) {
57 } elsif (/^To:\s*(.*)/i) {
70 my $handle = FindEmail $sender;
72 my ($userid, $sender, $subject, $timestamp, $message);
74 # Need to handle multiple messages
75 for (my $i = 0; $i < $count; $i++) {
76 ($userid, $sender, $subject, $timestamp, $message) = GetEmail $handle;
79 my $parser = new MIME::Parser;
81 $parser->output_to_core (1);
83 my $entity = $parser->parse_data ($message);
85 my %header = ParseEmail @{($entity->header)[0]};
88 print start_table ({-align => "center",
94 print start_table ({-align => "center",
95 -bgcolor => "#d4d0c8",
99 -width => "100%"}) . "\n";
100 print "<tbody><tr><td>\n";
101 print start_table ({-align => "center",
105 -bgcolor => "#ece9d8",
106 -width => "100%"}) . "\n";
108 foreach (keys (%header)) {
109 my $str = decode_mimewords ($header{$_});
112 th ({-align => "right",
113 -bgcolor => "#ece9d8",
114 -width => "8%"}, "$_:") . "\n" .
115 td ({-bgcolor => "white"}, $str)
123 print start_table ({-align => "center",
128 -width => "100%"}) . "\n";
129 print "<tbody><tr><td>\n";
130 print start_table ({-align => "center",
135 -width => "100%"}) . "\n";
136 print "<tbody><tr><td>\n";
138 my @parts = $entity->parts;
140 if (scalar @parts == 0) {
145 foreach my $part ($entity->parts) {
146 # We assume here that if this part is multipart/alternative then
147 # there exists at least one part that is text/html and we favor
148 # that (since we're outputing to a web page anyway...
149 if ($part->mime_type eq 'multipart/alternative') {
150 foreach my $subpart ($part->parts) {
151 if ($subpart->mime_type eq 'text/html') {
152 $subpart->print_body;
154 } elsif ($subpart->mime_type eq 'multipart/related') {
155 # This is stupid - multipart/related? When it's really just HTML?!?
156 $subpart->print_body;
161 if ($part->mime_type =~ /text/) {
170 print "</td></tr>\n";
172 print "</td></tr>\n";
180 "Email message from $sender",
181 "Email message from $sender",
187 NavigationBar $userid;