From 47ad83f337c9eeb4bc53afb85a71cf90a8a34106 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 02 Mar 2010 08:08:12 -0500
Subject: [PATCH] - Added force_7bit option to force MIME encoding of plain/text messages (#1486510)

---
 CHANGELOG                             |    1 +
 program/steps/settings/func.inc       |   12 +++++++++++-
 program/localization/en_US/labels.inc |    1 +
 program/localization/pl_PL/labels.inc |    1 +
 config/main.inc.php.dist              |    3 +++
 program/steps/mail/sendmail.inc       |    2 +-
 program/steps/settings/save_prefs.inc |    1 +
 7 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index a118bc0..c8dd711 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Added force_7bit option to force MIME encoding of plain/text messages (#1486510)
 - Use case sensitive check when checking for default folders (#1486346)
 - Fix checking for new mail: now checks unseen count of inbox (#1485794)
 - Improve performance by avoiding unnecessary updates to the session table (#1486325)
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index c35d4e1..d9bf340 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -472,5 +472,8 @@
 // When replying or forwarding place sender's signature above existing message
 $rcmail_config['sig_above'] = FALSE;
 
+// Use MIME encoding (quoted-printable) for 8bit characters in message body
+$rcmail_config['force_7bit'] = FALSE;
+
 // end of config file
 ?>
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index e7d99d2..7aaee37 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -302,6 +302,7 @@
 $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
 $labels['2047folding'] = 'Full RFC 2047 (other)';
+$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
 $labels['advancedoptions'] = 'Advanced options';
 $labels['focusonnewmessage'] = 'Focus browser window on new message';
 $labels['checkallfolders'] = 'Check all folders for new messages';
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index 38c762c..72ba479 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -236,6 +236,7 @@
 $labels['2231folding'] = 'RFC 2231 (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
 $labels['2047folding'] = 'RFC 2047 (przestarzałe)';
+$labels['force7bit'] = 'Używaj kodowania MIME dla znaków 8-bitowych';
 $labels['advancedoptions'] = 'opcje zaawansowane';
 $labels['readwhendeleted'] = 'Podczas usuwania oznacz wiadomość jako przeczytaną';
 $labels['flagfordeletion'] = 'Oznacz wiadomość do usunięcia zamiast ją usuwać';
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 6691e00..134664b 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -456,7 +456,7 @@
 
 // choose transfer encoding for plain/text body
 if (preg_match('/[^\x00-\x7F]/', $MAIL_MIME->getTXTBody()))
-  $transfer_encoding = '8bit';
+  $transfer_encoding = $RCMAIL->config->get('force_7bit') ? 'quoted-printable' : '8bit';
 else
   $transfer_encoding = '7bit';
 
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 094fa59..7d59e73 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -449,7 +449,17 @@
         'content' => $select_param_folding->show($config['mime_param_folding']),
       );
     }
-    
+
+    if (!isset($no_override['force_7bit'])) {
+      $field_id = 'rcmfd_force_7bit';
+      $input_7bit = new html_checkbox(array('name' => '_force_7bit', 'id' => $field_id, 'value' => 1));
+
+      $blocks['main']['options']['force_7bit'] = array(
+        'title' => html::label($field_id, Q(rcube_label('force7bit'))),
+        'content' => $input_7bit->show($config['force_7bit']?1:0),
+      );
+    }
+
     if (!isset($no_override['top_posting'])) {
       $field_id = 'rcmfd_top_posting';
       $select_replymode = new html_select(array('name' => '_top_posting', 'id' => $field_id, 'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex==0)"));
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 5319425..8a732bf 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -62,6 +62,7 @@
       'htmleditor'         => isset($_POST['_htmleditor']) ? TRUE : FALSE,
       'draft_autosave'     => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0,
       'mime_param_folding' => isset($_POST['_mime_param_folding']) ? intval($_POST['_mime_param_folding']) : 0,
+      'force_7bit'         => isset($_POST['_force_7bit']) ? TRUE : FALSE,
       'show_sig'           => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1,
       'top_posting'        => !empty($_POST['_top_posting']),
       'strip_existing_sig' => isset($_POST['_strip_existing_sig']),

--
Gitblit v1.9.1