diff options
Diffstat (limited to 'program/steps/mail')
-rw-r--r-- | 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 7e9e89519..6691e000c 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -415,10 +415,6 @@ else $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 @@ if (is_array($_SESSION['compose']['attachments'])) $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 @@ if (is_array($_SESSION['compose']['attachments'])) } } +// 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'); |