summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-08-05 13:07:53 +0200
committerAleksander Machniak <alec@alec.pl>2014-08-05 13:07:53 +0200
commite1b8f44e3f635a757d0d13cc2ac908a175593875 (patch)
treea2e00cf989d442d528ce0e10993f846cfa5070f3
parentcd943ab071ece4b5bb0161f5cf6a6ff1f7144f9d (diff)
Fix invalid Content-Type header when send_format_flowed=false (#1489992)
-rw-r--r--CHANGELOG1
-rw-r--r--program/lib/Mail/mime.php23
-rw-r--r--program/steps/mail/sendmail.inc6
3 files changed, 16 insertions, 14 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 70b6c7e4e..32008791a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -45,6 +45,7 @@ CHANGELOG Roundcube Webmail
- Fix errors when using localStorage in Safari's private browsing mode (#1489996)
- Fix bug where $Forwarded flag was being set even if server didn't support it (#1490000)
- Fix various iCloud vCard issues, added fallback for external photos (#1489993)
+- Fix invalid Content-Type header when send_format_flowed=false (#1489992)
RELEASE 1.0.2
-------------
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
index 50297dd3e..db0fd1fc2 100644
--- a/program/lib/Mail/mime.php
+++ b/program/lib/Mail/mime.php
@@ -1387,19 +1387,24 @@ class Mail_mime
if ($headers['Content-Type'] == 'text/plain') {
// single-part message: add charset and encoding
- $charset = 'charset=' . $this->_build_params['text_charset'];
- // place charset parameter in the same line, if possible
- // 26 = strlen("Content-Type: text/plain; ")
- $headers['Content-Type']
- .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset";
+ if ($this->_build_params['text_charset']) {
+ $charset = 'charset=' . $this->_build_params['text_charset'];
+ // place charset parameter in the same line, if possible
+ // 26 = strlen("Content-Type: text/plain; ")
+ $headers['Content-Type']
+ .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset";
+ }
+
$headers['Content-Transfer-Encoding']
= $this->_build_params['text_encoding'];
} else if ($headers['Content-Type'] == 'text/html') {
// single-part message: add charset and encoding
- $charset = 'charset=' . $this->_build_params['html_charset'];
- // place charset parameter in the same line, if possible
- $headers['Content-Type']
- .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset";
+ if ($this->_build_params['html_charset']) {
+ $charset = 'charset=' . $this->_build_params['html_charset'];
+ // place charset parameter in the same line, if possible
+ $headers['Content-Type']
+ .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset";
+ }
$headers['Content-Transfer-Encoding']
= $this->_build_params['html_encoding'];
} else {
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index cdffd18e6..bac751298 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -484,15 +484,11 @@ if (preg_match('/[^\x00-\x7F]/', $MAIL_MIME->getTXTBody())) {
$transfer_encoding = $RCMAIL->config->get('force_7bit') ? 'quoted-printable' : '8bit';
}
else {
- $text_charset = '';
+ $text_charset = 'US-ASCII';
$transfer_encoding = '7bit';
}
if ($flowed) {
- if (!$text_charset) {
- $text_charset = 'US-ASCII';
- }
-
$text_charset .= ";\r\n format=flowed";
}