/**
  * @return string
  */
 function SetEncodedBodyFromText($body, $charset = '')
 {
     //if ($charset == '') $charset = $GLOBALS[MailDefaultCharset];
     if ($charset == '') {
         $charset = $GLOBALS[MailInputCharset];
     }
     $body = preg_replace('/(<meta\\s.*)(charset\\s?=)([^"\'>\\s]*)/i', '$1$2' . $GLOBALS[MailOutputCharset], $body);
     $body = ConvertUtils::ConvertEncoding($body, $charset, $GLOBALS[MailOutputCharset]);
     $ContentTransferEncoding = MIMEConst_QuotedPrintableLower;
     if ($ContentTransferEncoding == MIMEConst_QuotedPrintableLower) {
         $this->Headers->SetHeaderByName(MIMEConst_ContentTransferEncoding, MIMEConst_QuotedPrintable);
         $this->_body = ConvertUtils::quotedPrintableWithLinebreak($body);
     } elseif ($ContentTransferEncoding == MIMEConst_Base64Lower) {
         $this->Headers->SetHeaderByName(MIMEConst_ContentTransferEncoding, MIMEConst_Base64);
         $this->_body = ConvertUtils::base64WithLinebreak($body);
     } else {
         $this->_body = $body;
     }
 }
 /**
  * @param string $str
  * @param string $toCharset
  * @return array
  */
 function EncodeString($str, $toCharset)
 {
     $outarray = array();
     /* $factor = (MIMEConst_DefaultQB == MIMEConst_QuotedPrintableShort) ? 0.35 : 0.7; */
     $outarray = strtolower($toCharset) == 'utf-8' ? ConvertUtils::SmartChunk($str, MIMEConst_DefaultQB, $toCharset, true) : ConvertUtils::SmartChunk($str, MIMEConst_DefaultQB, $toCharset, false);
     if (!ConvertUtils::IsLatin($str)) {
         for ($i = 0, $c = count($outarray); $i < $c; $i++) {
             if (MIMEConst_DefaultQB == MIMEConst_QuotedPrintableShort) {
                 $outarray[$i] = '=?' . strtolower($toCharset) . '?Q?' . str_replace('?', '=3F', str_replace(' ', '_', str_replace('_', '=5F', ConvertUtils::quotedPrintableWithLinebreak($outarray[$i], true)))) . '?=';
             } else {
                 if (MIMEConst_DefaultQB == MIMEConst_Base64Short) {
                     $outarray[$i] = '=?' . strtolower($toCharset) . '?B?' . base64_encode($outarray[$i]) . '?=';
                 }
             }
         }
     }
     return $outarray;
 }