3 # Display some message from the mail queue
5 require './sendmail-lib.pl';
6 require './boxes-lib.pl';
8 $access{'mailq'} || &error($text{'mailq_ecannot'});
9 $in{'file'} =~ /\.\./ && &error($text{'mailq_ecannot'});
10 $conf = &get_sendmailcf();
11 foreach $mqueue (&mailq_dir($conf)) {
12 $ok++ if ($in{'file'} =~ /^$mqueue\//);
14 $ok || &error($text{'mailq_ecannot'});
17 $mail = &mail_from_queue($qfile, "auto");
18 $mail || &error($text{'view_egone'});
19 &can_view_qfile($mail) || &error($text{'mailq_ecannot'});
21 @sub = split(/\0/, $in{'sub'});
22 $subs = join("", map { "&sub=$_" } @sub);
24 # We are looking at a mail within a mail ..
25 local $amail = &extract_mail($mail->{'attach'}->[$s]->{'data'});
30 ($name = $in{'file'}) =~ s/^.*\///;
32 $desc = &text('view_qdesc', "<tt>$name</tt>");
35 $desc = $text{'view_sub'};
37 &ui_print_header($desc, $text{'view_title'}, "");
39 print &ui_form_start("del_mailq.cgi");
40 if (!@sub && $config{'top_buttons'} == 2) {
41 print &ui_submit($text{'view_delete'}, "delete");
42 print &ui_submit($text{'view_flush'}, "flush");
45 print &ui_hidden("file", $in{'file'});
47 # Start of headers section
49 $rlink = "<a href='view_mailq.cgi?file=$in{'file'}&headers=0$subs'>$text{'view_noheaders'}</a>";
52 $rlink = "<a href='view_mailq.cgi?file=$in{'file'}&headers=1$subs'>$text{'view_allheaders'}</a>";
54 print &ui_table_start($text{'view_headers'}, "width=100%", 2, undef, $rlink);
57 # Show all the headers
58 if ($mail->{'fromline'}) {
59 print &ui_table_row($text{'mail_rfc'},
60 &html_escape($mail->{'fromline'}));
62 foreach $h (@{$mail->{'headers'}}) {
63 print &ui_table_row($h->[0],
64 &html_escape(&decode_mimewords($h->[1])));
68 # Just show the most useful headers
69 print &ui_table_row($text{'mail_from'},
70 &html_escape($mail->{'header'}->{'from'}));
71 print &ui_table_row($text{'mail_to'},
72 &html_escape($mail->{'header'}->{'to'}));
73 print &ui_table_row($text{'mail_cc'},
74 &html_escape($mail->{'header'}->{'cc'}))
75 if ($mail->{'header'}->{'cc'});
76 print &ui_table_row($text{'mail_date'},
77 &html_escape($mail->{'header'}->{'date'}));
78 print &ui_table_row($text{'mail_subject'},
79 &html_escape($mail->{'header'}->{'subject'}));
81 print &ui_table_end();
83 # Find body attachment
84 @attach = @{$mail->{'attach'}};
85 foreach $a (@attach) {
86 if ($a->{'type'} eq 'text/plain') {
92 print &ui_table_start($text{'view_body'}, "width=100%", 2);
94 foreach $l (&wrap_lines($body->{'data'}, $config{'wrap_width'})) {
95 $bodyhtml .= &link_urls_and_escape($l)."\n";
97 print &ui_table_row(undef, "<pre>".$bodyhtml."</pre>", 2);
98 print &ui_table_end();
101 # Display other attachments
102 @attach = grep { $_ ne $body } @attach;
103 @attach = grep { !$_->{'attach'} } @attach;
105 print &ui_columns_start([ $text{'view_afile'}, $text{'view_atype'},
106 $text{'view_asize'} ], 100, 0);
107 foreach $a (@attach) {
108 if ($a->{'type'} eq 'message/rfc822') {
109 print &ui_columns_row([
110 "<a href='view_mailq.cgi?file=$qfile$subs&sub=$a->{'idx'}'>$text{'view_sub'}</a>",
112 &nice_size(length($a->{'data'})),
116 print &ui_columns_row([
117 "<a href='qdetach.cgi/$a->{'filename'}?file=$qfile&attach=$a->{'idx'}$subs'>$a->{'filename'}</a>",
119 &nice_size(length($a->{'data'})),
123 print &ui_columns_end();
128 print &ui_submit($text{'view_delete'}, "delete");
129 print &ui_submit($text{'view_flush'}, "flush");
131 print &ui_form_end();
133 &ui_print_footer(!@sub ? ( ) : ( "view_mailq.cgi?file=$qfile", $text{'view_return'} ),
134 "list_mailq.cgi", $text{'mailq_return'},
135 "", $text{'index_return'});