Помощь - Поиск - Пользователи - Календарь
Полная версия: Исправление кодировки для email IPB 1.3.1
Форум на все случаи жизни > Программирование, скрипты, графика, WEB-строительство > Форумы > Invision Power Board
Scully
Подскажите, пожалуйста, как правильно сделать кодировку для e-mail в UTF-8?
Я сделал вот такие вот изменения
Код
function build_headers()
    {
        global $ibforums;
        
        $this->mail_headers  = "From: \"".$ibforums->vars['board_name']."\" <".$this->from.">\n";
        
        if ( $this->mail_method != 'smtp' )
        {
            if ( count( $this->bcc ) > 1 )
            {
                $this->mail_headers .= "Bcc: ".implode( "," , $this->bcc ) . "\n";
            }
        }
        else
        {
            if ( $this->to )
            {
                $this->mail_headers .= "To: ".$this->to."\n";
            }
            $this->mail_headers .= "Subject: ".$this->subject."\n";
        }
        $this->mail_headers .= "Content-Type: text/plain; charset=\"utf-8\"\n";
        $this->mail_headers .= "Return-Path: ".$this->from."\n";
        $this->mail_headers .= "X-Priority: 3\n";
        $this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";
        
        if ( count ($this->parts) > 0 )
        {
            
            $this->mail_headers .= "MIME-Version: 1.0\n";
            $this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry;
            $this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"utf-8\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;
            $this->mail_headers .= $this->build_multipart();
            
            $this->message = "";
        }
    
    }

Но пользователи жалуются, что получают письма, где в заголовке
Цитата
Scuba Diving Club - лб веел дайвеов

Т.е. пропадают русские буквы.
С чем это может быть связано?
Версия форума 1.3.1 оригинальная работает в UTF-8
Scully
Господа программеры!
Форум работает в UTF-8 и шлет письма в неправильной кодировке.
Помогите, пожалуйста.
Starichok Che
Чтобы не пересказывать известное, пожалуйте внимательно перечитайте ту тему на ibresource, где Вы тоже задали аналогичный вопрос.... Это давно расжёвано. Единственное замечание - насколько мне известно, utf-8 двухбайтная кодировка. Поэтому стоит добавить в подправленный Вам хидер информацию об этом.
Код
$this->mail_headers .= "Content-Transfer-Encoding: 8bit\n\n";
Источник - http://www.ibresource.ru/forums/index.php?showtopic=1516
Scully
Starichok Che
Указанный Вами источник я конечно же давно прочитал.
Может это и разжевано с windows-1251, но для UTF-8 это не работает.
Я не из праздного любопытства задаю этот вопрос, просто никто не может мне помочь, к сожалению.
Starichok Che
Scully - если ничего с Вашей стороны не помогло, то может быть в почтовом сервере хостера проблемы. Попробуйте поинтересоваться у них. И ещё. Такое возможно из за почтового клиента. Поинтересуйтесь, какими клиентами пользуются жалобщики.
Scully
Цитата(Starichok Che @ 3.01.2008 - 14:18) *
Такое возможно из за почтового клиента. Поинтересуйтесь, какими клиентами пользуются жалобщики.

Это я упустил из виду, хотя на ibresource об этом и говорили.
Причем я сам один из жалобщиков и я пользуюсь Microsoft Office Outlook 2003.
Scully
Вынужден признать, что я "чайник"
Причина нечитабельности в настройке Windows и почтового клиента.
Окончательно функция выглядит так
Код
function build_headers()
    {
        global $ibforums;
        
        $this->mail_headers  = "From: =?utf-8?B?".base64_encode('"'.$ibforums->vars['board_name'].'"')."?= <".$this->from.">\n";
        
        if ( $this->mail_method != 'smtp' )
        {
            if ( count( $this->bcc ) > 1 )
            {
                $this->mail_headers .= "Bcc: ".implode( "," , $this->bcc ) . "\n";
            }
        }
        else
        {
            if ( $this->to )
            {
                $this->mail_headers .= "To: ".$this->to."\n";
            }
            $this->mail_headers .= "Subject: ".$this->subject."\n";
        }
        
        $this->mail_headers .= "Return-Path: ".$this->from."\n";
        $this->mail_headers .= "X-Priority: 3\n";
        $this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";
        $this->mail_headers .= "Content-Type: text/plain; charset=\"utf-8\"\n";
        $this->mail_headers .= "Content-Transfer-Encoding: 8bit\n";
        
        if ( count ($this->parts) > 0 )
        {
            
            $this->mail_headers .= "MIME-Version: 1.0\n";
            $this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry;
            $this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"utf-8\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;
            $this->mail_headers .= $this->build_multipart();
            
            $this->message = "";
        }
    
    }

98% опрошенных пользователей утверждают, что получают читабельные сообщения.
Starichok Che
Вы были правы.
..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.

Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.

Warning: require_once(/var/www/bestfil1/public_html/setlinks_0d98c/slsimple.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/bestfil1/public_html/forums/lofiversion/index.php on line 355