From 615a0a96618fa99e7e452523145d6c0f238d4473 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Wed, 31 Jul 2013 09:33:43 -0400
Subject: [PATCH] Merged revisions 3960-4065 from stable branch.
---
interface/lib/classes/ispcmail.inc.php | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 44 insertions(+), 12 deletions(-)
diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php
index e30a711..d49af96 100644
--- a/interface/lib/classes/ispcmail.inc.php
+++ b/interface/lib/classes/ispcmail.inc.php
@@ -414,16 +414,22 @@
$this->body = "This is a multi-part message in MIME format.\n\n";
if($text) {
- $this->body .= "--{$this->mime_boundary}\n" .
+ /*$this->body .= "--{$this->mime_boundary}\n" .
"Content-Type:text/plain; charset=\"" . strtolower($this->mail_charset) . "\"\n" .
- "Content-Transfer-Encoding: 7bit\n\n" . $this->text_part . "\n\n";
- }
+ "Content-Transfer-Encoding: 7bit\n\n" . $this->text_part . "\n\n";*/
+ $this->body .= "--{$this->mime_boundary}\n" .
+ "Content-Type:text/plain; charset=\"UTF-8\"\n" .
+ "Content-Transfer-Encoding: 8bit\n\n" . $this->text_part . "\n\n";
+ }
if($html) {
- $this->body .= "--{$this->mime_boundary}\n" .
+ /*$this->body .= "--{$this->mime_boundary}\n" .
"Content-Type:text/html; charset=\"" . strtolower($this->mail_charset) . "\"\n" .
- "Content-Transfer-Encoding: 7bit\n\n" . $this->html_part . "\n\n";
- }
+ "Content-Transfer-Encoding: 7bit\n\n" . $this->html_part . "\n\n";*/
+ $this->body .= "--{$this->mime_boundary}\n" .
+ "Content-Type:text/html; charset=\"UTF-8\"\n" .
+ "Content-Transfer-Encoding: 8bit\n\n" . $this->html_part . "\n\n";
+ }
if($attach) {
foreach($this->attachments as $att) {
@@ -490,17 +496,42 @@
$this->_is_signed = true;
}
+ private function _char_to_hex($matches) {
+ return '=' . strtoupper(dechex(ord($matches[1])));
+ }
+
/**
* Function to encode a header if necessary
* according to RFC2047
* @access private
*/
private function _encodeHeader($input, $charset = 'ISO-8859-1') {
- preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches);
- foreach ($matches[1] as $value) {
- $replacement = preg_replace('/([\x20\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value);
- $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);
- }
+ preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches);
+ foreach ($matches[1] as $value) {
+ $replacement = preg_replace_callback('/([\x20\x80-\xFF])/', array($this, '_char_to_hex'), $value);
+ $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);
+ }
+
+ return $input;
+ }
+
+ /**
+ * Function to encode the subject if necessary
+ * according to RFC2047
+ * @access private
+ */
+ private function _encodeSubject($input, $charset = 'ISO-8859-1') {
+ /*
+ if($charset == 'UTF-8' && function_exists('imap_8bit')) {
+ $input = "=?utf-8?Q?" . imap_8bit($input) . "?=";
+ } else {
+ preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches);
+ foreach ($matches[1] as $value) {
+ $replacement = preg_replace('/([\x20\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value);
+ $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);
+ }
+ }*/
+ $input='=?UTF-8?B?'.base64_encode($input).'?=';
return $input;
}
@@ -578,7 +609,8 @@
//$subject = $this->_encodeHeader($this->headers['Subject'], $this->mail_charset);
$subject = $this->headers['Subject'];
- $enc_subject = $this->_encodeHeader($subject, $this->mail_charset);
+ //$enc_subject = $this->_encodeHeader($subject, $this->mail_charset);
+ $enc_subject = $this->_encodeSubject($subject, $this->mail_charset);
unset($this->headers['Subject']);
}
--
Gitblit v1.9.1