- my $v = $simple->header($h);
- defined $v or next;
- $v = decode("MIME-Header", $v);
- $v = encode("utf8", $v);
- $v = escapeHTML($v);
- $v =~ tr/\n/ /;
- $rv .= "$h: $v\n";
-
- if ($h eq "From" || $h eq "Subject") {
- push @title, $v;
+ my $v = $mime->header($h);
+ defined($v) && length($v) or next;
+ $v = PublicInbox::Hval->new_oneline($v);
+ $rv .= "$h: " . $v->as_html . "\n";
+
+ if ($h eq 'From') {
+ my @from = Email::Address->parse($v->raw);
+ $v = $from[0]->name;
+ unless (defined($v) && length($v)) {
+ $v = '<' . $from[0]->address . '>';
+ }
+ $title[1] = ascii_html($v);
+ } elsif ($h eq 'Subject') {
+ $title[0] = $v->as_html;