From 3d0ec7620fafb9acaeac25cab8e81c44a6df2228 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 25 Feb 2010 15:29:47 -0500
Subject: [PATCH] - improve transfer encoding choosing

---
 program/steps/mail/sendmail.inc |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 7e9e895..6691e00 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -415,10 +415,6 @@
   $MAIL_MIME->setTXTBody($plugin['body'], false, true);
 }
 
-// chose transfer encoding
-$charset_7bit = array('ASCII', 'ISO-2022-JP', 'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-15');
-$transfer_encoding = in_array(strtoupper($message_charset), $charset_7bit) ? '7bit' : '8bit';
-
 // add stored attachments, if any
 if (is_array($_SESSION['compose']['attachments']))
 {
@@ -446,7 +442,9 @@
         $ctype, 
         $attachment['name'],
         ($attachment['data'] ? false : true),
-        ($ctype == 'message/rfc822' ? $transfer_encoding : 'base64'),
+        // @TODO: quoted-printable for message/rfc822 is safe,
+	// but we should check that 7bit or 8bit is possible here
+        ($ctype == 'message/rfc822' ? 'quoted-printable' : 'base64'),
         ($ctype == 'message/rfc822' ? 'inline' : 'attachment'),
         $message_charset, '', '', 
         $CONFIG['mime_param_folding'] ? 'quoted-printable' : NULL,
@@ -456,6 +454,12 @@
   }
 }
 
+// choose transfer encoding for plain/text body
+if (preg_match('/[^\x00-\x7F]/', $MAIL_MIME->getTXTBody()))
+  $transfer_encoding = '8bit';
+else
+  $transfer_encoding = '7bit';
+
 // encoding settings for mail composing
 $MAIL_MIME->setParam('text_encoding', $transfer_encoding);
 $MAIL_MIME->setParam('html_encoding', 'quoted-printable');

--
Gitblit v1.9.1