1 <& /elements/header-popup.html &>
4 font-family: monospace;
10 border: 1px solid #7e0079
15 <TR><TD>From:</TD><TD><% $cust_msg->env_from %></TD></TR>
16 <TR><TD>To:</TD><TD><% $env_to %></TD></TR>
18 <TR><TD><% $label{$cust_msg->status} %></TD><TD><% $date %></TD></TR>
20 % if ( $cust_msg->error ) {
21 <TR><TD>Error:</TD><TD><% encode_entities($cust_msg->error) %></TD></TR>
23 <& /elements/menubar.html,
25 'url_base' => $cgi->self_url . ';part=',
26 'selected' => $selected_index,
28 map { $partnames[$_] => $_ } (0 .. scalar(@parts) - 1),
31 <DIV STYLE="text-align:center">
32 % if ( $selected_part->isa('MIME::Entity') ) {
33 % my $type = $selected_part->mime_type;
34 % if ( $type =~ /^text/ ) {
35 %#<TEXTAREA style="font-family:monospace" readonly=1 cols=80 rows=20>
36 <P CLASS="pre"><% encode_entities( $selected_part->bodyhandle->as_string ) %></P>
37 % } else { # show a download link
38 % my $url = $fsurl . "view/cust_msg_part.html?$custmsgnum+$selected_index";
40 <DIV STYLE="display: inline-block; padding: 4px; border: 2px solid #00c">
41 % if ( $type =~ /^image\/\w+$/ ) {
42 <IMG SRC="<% $url %>">
44 <FONT SIZE="+1">Download <% $partnames[$selected_index] %></FONT>
48 % } elsif ($selected_part->isa('MIME::Head')) {
49 <P CLASS="pre"><% encode_entities( $cust_msg->header ) %></P>
53 <& /elements/footer.html &>
56 my $curuser = $FS::CurrentUser::CurrentUser;
57 die "access denied" unless $curuser->access_right('View email logs');
59 my ($custmsgnum) = $cgi->keywords;
60 $custmsgnum =~ /^(\d+)$/ or die "illegal custmsgnum";
61 my $cust_msg = qsearchs('cust_msg', { 'custmsgnum' => $custmsgnum });
63 $date = time2str('%Y-%m-%d %T', $cust_msg->_date) if ( $cust_msg->_date );
64 my @to = map { encode_entities($_->format) }
65 Email::Address->parse($cust_msg->env_to);
66 my $env_to = join('</TD></TR><TR><TD></TD><TD>', @to);
70 'failed' => 'Attempted: ',
71 'prepared' => 'Not sent',
75 my %friendly_name = ( 'text/plain' => 'Text', 'text/html' => 'HTML' );
77 $part->head->recommended_filename
78 || $friendly_name{$part->mime_type}
82 my @parts = $cust_msg->parts;
83 my @partnames = map { &{$partname}($_) } @parts;
84 push @parts, $cust_msg->entity->head;
85 push @partnames, mt('Header');
88 my $selected_index = 0;
89 if ( $cgi->param('part') =~ /^(\d+)$/ ) {
90 $selected_index = $1 if $1 < scalar(@parts);
92 $selected_part = $parts[$selected_index];
93 $cgi->delete('part'); # for self_url