X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=lib%2FPublicInbox%2FReply.pm;h=091f20bc00f35106afdef4a84df1d88372f61b22;hp=d96fadfc8b3bfc8eec1c8400218a88fa4280f77b;hb=4eee5af6011cc8cdefb66c9729952c7eff5c0b0b;hpb=7057307e044b0b63e2517e125c0f971630966072 diff --git a/lib/PublicInbox/Reply.pm b/lib/PublicInbox/Reply.pm index d96fadfc..091f20bc 100644 --- a/lib/PublicInbox/Reply.pm +++ b/lib/PublicInbox/Reply.pm @@ -1,10 +1,10 @@ -# Copyright (C) 2014-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # For reply instructions and address generation in WWW UI package PublicInbox::Reply; use strict; -use warnings; +use v5.10.1; use URI::Escape qw/uri_escape_utf8/; use PublicInbox::Hval qw(ascii_html obfuscate_addrs mid_href); use PublicInbox::Address; @@ -68,7 +68,6 @@ sub mailto_arg_link { my $obfs = $ibx->{obfuscate}; my $subj = $hdr->header('Subject') || ''; $subj = "Re: $subj" unless $subj =~ /\bRe:/i; - my $subj_raw = $subj; my $mid = $hdr->header_raw('Message-ID'); push @arg, '--in-reply-to='.squote_maybe(mid_clean($mid)); my $irt = mid_href($mid); @@ -81,7 +80,6 @@ sub mailto_arg_link { # no $subj for $href below } else { push @arg, "--to=$to"; - $to = uri_escape_utf8($to); $subj = uri_escape_utf8($subj); } my @cc = sort values %$cc; @@ -99,13 +97,15 @@ sub mailto_arg_link { } } - push @arg, "--subject=".squote_maybe($subj_raw); - # I'm not sure if address obfuscation and mailto: links can # be made compatible; and address obfuscation is misguided, # anyways. return (\@arg, '', $reply_to_all) if $obfs; + # keep `@' instead of using `%40' for RFC 6068 + utf8::encode($to); + $to =~ s!([^A-Za-z0-9\-\._~\@])!$URI::Escape::escapes{$1}!ge; + # order matters, Subject is the least important header, # so it is last in case it's lost/truncated in a copy+paste my $href = "mailto:$to?In-Reply-To=$irt${cc}&Subject=$subj";