зеркало из https://github.com/microsoft/git.git
send-email: automatically determine transfer-encoding
git send-email, when invoked without a --transfer-encoding option, sends 8bit data without a MIME version or a transfer encoding. This has several downsides. First, unless the transfer encoding is specified, it defaults to 7bit, meaning that non-ASCII data isn't allowed. Second, if lines longer than 998 bytes are used, we will send an message that is invalid according to RFC 5322. The --validate option, which is the default, catches this issue, but it isn't clear to many people how to resolve this. To solve these issues, default the transfer encoding to "auto", so that we explicitly specify 8bit encoding when lines don't exceed 998 bytes and quoted-printable otherwise. This means that we now always emit Content-Transfer-Encoding and MIME-Version headers, so remove the conditionals from this portion of the code. It is unlikely that the unconditional inclusion of these two headers will affect the deliverability of messages in anything but a positive way, since MIME is already widespread and well understood by most email programs. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
f2d06fb13f
Коммит
e67a228cd8
|
@ -147,8 +147,7 @@ Note that no attempts whatsoever are made to validate the encoding.
|
|||
otherwise.
|
||||
+
|
||||
Default is the value of the `sendemail.transferEncoding` configuration
|
||||
value; if that is unspecified, git will use 8bit and not add a
|
||||
Content-Transfer-Encoding header.
|
||||
value; if that is unspecified, default to `auto`.
|
||||
|
||||
--xmailer::
|
||||
--no-xmailer::
|
||||
|
|
|
@ -231,7 +231,7 @@ my ($validate, $confirm);
|
|||
my (@suppress_cc);
|
||||
my ($auto_8bit_encoding);
|
||||
my ($compose_encoding);
|
||||
my ($target_xfer_encoding);
|
||||
my $target_xfer_encoding = 'auto';
|
||||
|
||||
my ($debug_net_smtp) = 0; # Net::SMTP, see send_message()
|
||||
|
||||
|
@ -1737,17 +1737,11 @@ sub process_file {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (defined $target_xfer_encoding) {
|
||||
$xfer_encoding = '8bit' if not defined $xfer_encoding;
|
||||
($message, $xfer_encoding) = apply_transfer_encoding(
|
||||
$message, $xfer_encoding, $target_xfer_encoding);
|
||||
}
|
||||
if (defined $xfer_encoding) {
|
||||
push @xh, "Content-Transfer-Encoding: $xfer_encoding";
|
||||
}
|
||||
if (defined $xfer_encoding or $has_content_type) {
|
||||
unshift @xh, 'MIME-Version: 1.0' unless $has_mime_version;
|
||||
}
|
||||
$xfer_encoding = '8bit' if not defined $xfer_encoding;
|
||||
($message, $xfer_encoding) = apply_transfer_encoding(
|
||||
$message, $xfer_encoding, $target_xfer_encoding);
|
||||
push @xh, "Content-Transfer-Encoding: $xfer_encoding";
|
||||
unshift @xh, 'MIME-Version: 1.0' unless $has_mime_version;
|
||||
|
||||
$needs_confirm = (
|
||||
$confirm eq "always" or
|
||||
|
|
|
@ -225,6 +225,8 @@ X-Mailer: X-MAILER-STRING
|
|||
In-Reply-To: <unique-message-id@example.com>
|
||||
References: <unique-message-id@example.com>
|
||||
Reply-To: Reply <reply@example.com>
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -415,6 +417,7 @@ test_expect_success $PREREQ 'reject long lines' '
|
|||
--from="Example <nobody@example.com>" \
|
||||
--to=nobody@example.com \
|
||||
--smtp-server="$(pwd)/fake.sendmail" \
|
||||
--transfer-encoding=8bit \
|
||||
$patches longline.patch \
|
||||
2>errors &&
|
||||
grep longline.patch errors
|
||||
|
@ -609,6 +612,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -653,6 +658,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -688,6 +695,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -714,6 +723,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -748,6 +759,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -779,6 +792,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -810,6 +825,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -845,6 +862,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
@ -873,6 +892,8 @@ Subject: [PATCH 1/1] Second.
|
|||
Date: DATE-STRING
|
||||
Message-Id: MESSAGE-ID-STRING
|
||||
X-Mailer: X-MAILER-STRING
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Result: OK
|
||||
EOF
|
||||
|
|
Загрузка…
Ссылка в новой задаче