Версия для печати
31
Дек
2007

RoundCube

Все, что ниже справедливо для: roundcubemail-0.1-rc2-ru

Ссылки: Англоязычный сайт проекта. Русскоязычный сайт с локализованным RoundCube.

Теперь мой тюнинг:

1. Поигравшись с mbstring и iconv, которые можно использовать из RundCube для работы с различными кодировками – выключил их. Если их нет, то RoundCube использует свой собственный механизм, который, как мне показалось, работает лучше.
Для этого в файле program/include/main.inc поправить:

-    $MBSTRING = $s_mbstring_loaded = extension_loaded("mbstring");
+    $MBSTRING = $s_mbstring_loaded = FALSE;

и

-  if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7')
+  if (function_exists('remove_iconv') && $from != 'UTF-7' && $to != 'UTF-7')

в файле: program/lib/Mail/mime.php поправить:

-  if (function_exists('iconv_mime_encode') && preg_match('#[\x80-\xFF]{1}#', $hdr_val)){
+  if (function_exists('remove_iconv_mime_encode') && preg_match('#[\x80-\xFF]{1}#', $hdr_val)){

2. По советам из старого форума русского RoundCube сделал кодировку CP1251 кодировкой по умолчанию:
в файле: program/include/rcube_imap.inc

-    return rcube_charset_convert($input, !empty($fallback) ? $fallback : 'ISO-8859-1');
+    return rcube_charset_convert($input, !empty($fallback) ? $fallback : 'CP1251');

в файле: program/lib/utf8.class.php

-  var $charset = "ISO-8859-1";
+  var $charset = "CP1251";

и

-  function __construct($charset="ISO-8859-1"){
+   function __construct($charset="CP1251"){

и

-  function utf8($charset="ISO-8859-1"){
+  function utf8($charset="CP1251"){

3. Добавил правило перекодировки KOI8-R:
в файле: program/lib/utf8.class.php добавить

 $utf8_maps = array(
   "CP1250" => UTF8_MAP_DIR . "/CP1250.map",
+  "KOI8-R" => UTF8_MAP_DIR . "/KOI8R.map",
+  "KOI8_R" => UTF8_MAP_DIR . "/KOI8R.map",
+  "KOI8R"  => UTF8_MAP_DIR . "/KOI8R.map",
   "CP1251" => UTF8_MAP_DIR . "/CP1251.map",

И положить в папку: program/lib/encoding файл KOI8R.map

4. Добавил новую функцию в файле program/include/rcube_imap.inc

   var $debug_level = 1;
+  var $charset = '';
   var $error_code = 0;

и

     $this->__construct($db_conn);
     }

+  function scharset($chars) {
+   $this->charset = $chars;
+   }      
/**
    * Connect to an IMAP server

И использую её в: program/steps/mail/func.inc

     foreach ($a_show_cols as $col)
       {
+      $IMAP->scharset($header->charset);
       if ($col=='from' || $col=='to')

и

     if (!$headers[$hkey])
       continue;
+    $IMAP->scharset($headers['charset']);
     if ($hkey=='date' && !empty($headers[$hkey]))

5. Если в письме есть вложения вида .html или .txt, то RoundCube пробует открывать их своими средствами и часто проблема кодировок тут тоже вылезает. Потому решил, что .html и .txt вложения должны быть такими же вложениями, как и остальные. Тогда они отображаются как вложения и открываются на стороне клиента более корректно. Потому такие патчи:
в файле: program/js/app.js «this.mimetypes» надо сделать таким:

// mimetypes supported by the browser (default settings)
   this.mimetypes = new Array( 'image/jpeg', 'image/gif', 'image/png', 'application/x-javascript',  'application/x-shockwave-flash');

Т.е. убрать 'text/plain', 'text/html', 'text/xml'. Я так же убрал еще 'application/pdf' — что бы PDF так же не открывался браузером.

А так же в файле: program/steps/mail/get.inc

     // deliver part content
-    if ($ctype_primary=='text' && $ctype_secondary=='html')
+    if ($ctype_primary=='text' && $ctype_secondary=='html' && FALSE)

И в файле: program/steps/mail/func.inc

-      else if (($primary_type=='text' && ($secondary_type=='plain' || $secondary_type=='html') && $mail_part->disposition!='attachment') || ($primary_type=='message' && $secondary_type=='delivery-status'))
+      else if ((($primary_type=='text' && ($secondary_type=='plain' || $secondary_type=='html') && $mail_part->disposition!='attachment') || ($primary_type=='message' && $secondary_type=='delivery-status')) && !$mail_part->filename)

Вот и все!

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

По теме:

Один комментарий на запись “RoundCube”

  1. Василий пишет:

    Спасибо за статью — помогла решить пробьлему писем в koi8r с yandex.

Оставить комментарий



Anti-spam image