]> Sergey Matveev's repositories - public-inbox.git/commitdiff
view: add per-message HTML footer to encourage replies
authorEric Wong <e@80x24.org>
Sat, 26 Apr 2014 02:29:22 +0000 (02:29 +0000)
committerEric Wong <e@80x24.org>
Sat, 26 Apr 2014 02:29:22 +0000 (02:29 +0000)
This may not work with most mail user agents, however.

lib/PublicInbox/View.pm

index 0a8ab549c97b878c8f2fa215b6a1230acec1850d..e43872037ebc493d1c488b14ee1b91b8031f9299 100644 (file)
@@ -21,6 +21,8 @@ sub as_html {
 
        headers_to_html_header($mime, $full_pfx) .
                multipart_text_as_html($mime, $full_pfx) .
+               '</pre><hr /><pre>' .
+               html_footer($mime) .
                '</pre></body></html>';
 }
 
@@ -182,4 +184,33 @@ sub headers_to_html_header {
         '</title></head><body><pre style="white-space:pre-wrap">' .  $rv);
 }
 
+sub html_footer {
+       my ($mime) = @_;
+       my %cc; # everyone else
+       my $to; # this is the From address
+
+       foreach my $h (qw(From To Cc)) {
+               my $v = $mime->header($h);
+               defined($v) && length($v) or next;
+               my @addrs = Email::Address->parse($v);
+               foreach my $recip (@addrs) {
+                       my $address = $recip->address;
+                       my $dst = lc($address);
+                       $cc{$dst} ||= $address;
+                       $to ||= $dst;
+               }
+       }
+
+       my $subj = $mime->header('Subject') || '';
+       $subj = "Re: $subj" unless $subj =~ /\bRe:/;
+       my $irp = uri_escape($mime->header_obj->header_raw('Message-ID') || '');
+       delete $cc{$to};
+       $to = uri_escape($to);
+
+       my $cc = uri_escape(join(',', values %cc));
+       my $href = "mailto:$to?In-Reply-To=$irp&Cc=${cc}&Subject=$subj";
+
+       '<a href="' . ascii_html($href) . '">reply</a>';
+}
+
 1;