summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--program/include/rcube_imap.php7
-rw-r--r--program/include/rcube_imap_generic.php4
-rw-r--r--program/include/rcube_storage.php5
-rw-r--r--program/steps/mail/viewsource.inc2
5 files changed, 13 insertions, 6 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 37170fc65..4cbaa6ece 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Fix line separator in exported messages (#1488603)
- Fix XSS issue where plain signatures wasn't secured in HTML mode (#1488613)
- Fix XSS issue where href="javascript:" wasn't secured (#1488613)
- Fix impossible to create message with empty plain text part (#1488610)
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 461ecb0d2..5dd9c1250 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2138,14 +2138,17 @@ class rcube_imap extends rcube_storage
/**
* Sends the whole message source to stdout
+ *
+ * @param int $uid Message UID
+ * @param bool $formatted Enables line-ending formatting
*/
- public function print_raw_body($uid)
+ public function print_raw_body($uid, $formatted = true)
{
if (!$this->check_connection()) {
return;
}
- $this->conn->handlePartBody($this->folder, $uid, true, NULL, NULL, true);
+ $this->conn->handlePartBody($this->folder, $uid, true, null, null, true, null, $formatted);
}
diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php
index 8d956f2b9..915a11aad 100644
--- a/program/include/rcube_imap_generic.php
+++ b/program/include/rcube_imap_generic.php
@@ -2377,7 +2377,7 @@ class rcube_imap_generic
return $this->handlePartBody($mailbox, $id, $is_uid, $part);
}
- function handlePartBody($mailbox, $id, $is_uid=false, $part='', $encoding=NULL, $print=NULL, $file=NULL)
+ function handlePartBody($mailbox, $id, $is_uid=false, $part='', $encoding=NULL, $print=NULL, $file=NULL, $formatted=true)
{
if (!$this->select($mailbox)) {
return false;
@@ -2494,7 +2494,7 @@ class rcube_imap_generic
continue;
$line = convert_uudecode($line);
// default
- } else {
+ } else if ($formatted) {
$line = rtrim($line, "\t\r\n\0\x0B") . "\n";
}
diff --git a/program/include/rcube_storage.php b/program/include/rcube_storage.php
index 1075b0f43..768a26d73 100644
--- a/program/include/rcube_storage.php
+++ b/program/include/rcube_storage.php
@@ -502,8 +502,11 @@ abstract class rcube_storage
/**
* Sends the whole message source to stdout
+ *
+ * @param int $uid Message UID
+ * @param bool $formatted Enables line-ending formatting
*/
- abstract function print_raw_body($uid);
+ abstract function print_raw_body($uid, $formatted = true);
/**
diff --git a/program/steps/mail/viewsource.inc b/program/steps/mail/viewsource.inc
index 59ccb386e..c560d7d41 100644
--- a/program/steps/mail/viewsource.inc
+++ b/program/steps/mail/viewsource.inc
@@ -44,7 +44,7 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET))
header("Content-Disposition: attachment; filename=\"$filename\"");
}
- $RCMAIL->storage->print_raw_body($uid);
+ $RCMAIL->storage->print_raw_body($uid, empty($_GET['_save']));
}
else
{