On Thu, Nov 03, 2016 at 11:38:45AM -0400, Jeff King wrote: > On Thu, Nov 03, 2016 at 11:34:53AM -0400, Jeff King wrote: > > > This is missing a Content-Transfer-Encoding. I think the default is the > > traditional 7-bit ascii encoding, but your body has characters with the > > high-bit set (your UTF-8 bullet). > > > > Try adding: > > > > Content-Transfer-Encoding: 8bit > > > > I haven't seen this before, but I do recall that vger's MTA is very > > picky about this and wants to rewrite transfer-encodings, so it seems > > plausible. > > Technically, I think you'd also need a: > > MIME-Version: 1.0 > > header. That being said, I just peeked at the send-email code and it > looks like we try to add in these headers as necessary. It's possible > there's a bug, though. What does "git send-email --dry-run" say is in > the headers it sends out? Answering my own question, it looks like send-email gets confused when you give a content-type but no content-transfer-encoding. It wants to fill in both or neither. This probably helps: diff --git a/git-send-email.perl b/git-send-email.perl index da81be40c..784bb874b 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1568,11 +1568,13 @@ foreach my $t (@files) { push @cc, recipients_cmd("cc-cmd", "cc", $cc_cmd, $t) if defined $cc_cmd && !$suppress_cc{'cccmd'}; - if ($broken_encoding{$t} && !$has_content_type) { + if ($broken_encoding{$t}) { $xfer_encoding = '8bit' if not defined $xfer_encoding; - $has_content_type = 1; - push @xh, "Content-Type: text/plain; charset=$auto_8bit_encoding"; - $body_encoding = $auto_8bit_encoding; + if (!$has_content_type) { + $has_content_type = 1; + push @xh, "Content-Type: text/plain; charset=$auto_8bit_encoding"; + $body_encoding = $auto_8bit_encoding; + } } if ($broken_encoding{$t} && !is_rfc2047_quoted($subject)) { but I think there is more cleanup to handle this case (e.g., it auto-guesses utf-8, but it should pull the value from the existing content-type header). -Peff