Joe Perches [off-list ref] writes:
quoted hunk
Some MTAs reject or filter long header lines which can
be generated if the cc list is only a few entries.
Fold long header lines to 78 chars to be more rfc compliant.
Signed-off-by: Joe Perches <joe@perches.com>
diff --git a/git-send-email.perl b/git-send-email.perl
index dd821f7..cb8b48b 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -835,10 +870,10 @@ sub send_message
$gitversion = Git::version();
}
- my $cc = join(", ", unique_email_list(@cc));
+ @cc = unique_email_list(@cc);
my $ccline = "";
- if ($cc ne '') {
- $ccline = "\nCc: $cc";
+ if (@cc gt 0) {
"gt"? I think you meant (@cc > 0) but you can also say "if (@cc) {" which
would most clearly convey what you want to say..
quoted hunk
+ $ccline = fold_header("\nCc: ", ", ", @cc);
}
my $sanitized_sender = sanitize_address($sender);
make_message_id() unless defined($message_id);@@ -976,7 +1011,7 @@ X-Mailer: git-send-email $gitversion
if ($smtp_server !~ m#^/#) {
print "Server: $smtp_server\n";
print "MAIL FROM:<$raw_from>\n";
- print "RCPT TO:".join(',',(map { "<$_>" } @recipients))."\n";
+ print fold_header("RCPT TO:", ",", map { "<$_>" } @recipients)."\n";
I do not think this hunk is correct.
Shouldn't we be rather repeating "RCPT TO: " for each recipient, as
RFC2821 4.1.1.3 says (this is an issue with the original code)? I do not
think SMTP's "RCPT TO" command has the notion of continuation line used
for the payload (i.e. RFC 2822 Internet Message Format), and folding the
line is a new bug this patch introduces.
} else {
print "Sendmail: $smtp_server ".join(' ',@sendmail_parameters)."\n";
}
On Wed, 2009-10-07 at 22:02 -0700, Junio C Hamano wrote:
Joe Perches [off-list ref] writes:
quoted
Some MTAs reject or filter long header lines which can
be generated if the cc list is only a few entries.
Fold long header lines to 78 chars to be more rfc compliant.
- my $cc = join(", ", unique_email_list(@cc));
It's probably better/simpler to not use fold_header and
just do the same join as "my $to"
my $cc = join(",\n\t", unique_email_list(@cc));
quoted
if ($smtp_server !~ m#^/#) {
print "Server: $smtp_server\n";
print "MAIL FROM:<$raw_from>\n";
- print "RCPT TO:".join(',',(map { "<$_>" } @recipients))."\n";
+ print fold_header("RCPT TO:", ",", map { "<$_>" } @recipients)."\n";
I do not think this hunk is correct.
Shouldn't we be rather repeating "RCPT TO: " for each recipient, as
RFC2821 4.1.1.3 says (this is an issue with the original code)?
Looks like you're right.
Want a new patch or will you fix both issues?
I suggest using the same join as "To:" for "Cc:" and
multiple single line "RCPT TO:"s.
Some MTAs reject Cc: lines longer than 78 chars.
Avoid this by using the same join as "To:" ",\n\t"
so each subsequent Cc entry is on a new line.
RCPT TO: should have a single entry per line.
see: http://www.ietf.org/rfc/rfc2821.txt
Signed-off-by: Joe Perches <joe@perches.com>
diff --git a/git-send-email.perl b/git-send-email.perl
index dd821f7..ce81425 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -835,7 +835,7 @@ sub send_message
$gitversion = Git::version();
}
- my $cc = join(", ", unique_email_list(@cc));
+ my $cc = join(",\n\t", unique_email_list(@cc));
my $ccline = "";
if ($cc ne '') {
$ccline = "\nCc: $cc";@@ -976,7 +976,9 @@ X-Mailer: git-send-email $gitversion
if ($smtp_server !~ m#^/#) {
print "Server: $smtp_server\n";
print "MAIL FROM:<$raw_from>\n";
- print "RCPT TO:".join(',',(map { "<$_>" } @recipients))."\n";
+ foreach my $entry (@recipients) {
+ print "RCPT TO:<$entry>\n";
+ }
} else {
print "Sendmail: $smtp_server ".join(' ',@sendmail_parameters)."\n";
}