При работе с друпал и уберкартом, в качестве интернет магазина, столкнулись с интересной проблемой - при указании длинного имени отправителя в настройках интернет магазина, пользователям приходили письма, где вместо адреса отправителя стояло простое "Неизвестный отправитель".

Начали разбираться в чем же причина, первоначально начали грешить на уберкарт, начали копать, проверять, но обнаружили что уберкарт тут не причем.

В итоге, после поисков и локализации проблемы нашли решение для нее. Нужно в файле includes/unicode.inc увеличить длину чанка, например так $chunk_size = 400

Вот код измененной функции mime_header_encode()

<?php
function mime_header_encode($string) {
  if (
preg_match('/[^\x20-\x7E]/', $string)) {
   
$chunk_size = 400; // floor((75 - strlen("=?UTF-8?B??=")) * 0.75);
   
$len = strlen($string);
   
$output = '';
    while (
$len > 0) {
     
$chunk = drupal_truncate_bytes($string, $chunk_size);
     
$output .= ' =?UTF-8?B?'. base64_encode($chunk) ."?=\n";
     
$c = strlen($chunk);
     
$string = substr($string, $c);
     
$len -= $c;
    }
    return
trim($output);
  }
  return
$string;
}
?>

Если этого не сделать, то при использовании русский символов в сочетании с длинным названием имени отправителя, система неправильно преобразовывает эти строки. Это справедливо не только для уберкарта, но и для любых других модулей.

Поэтому, если у вас есть проблемы с отображением русского имени отправителя в ваших письмах, которые отправляет друпал, то попробуйте сделать изменения, приведенные выше.

Вот обсуждение проблемы с именем отправителя на оф. сайте друпала

Ключевые слова: