Проблемы с кодировкой письма функции mail();

Главные вкладки

Аватар пользователя villy villy 25 апреля 2008 в 18:12

В общем при отправке письма, появляются кракозябры, т.е. не совпадают кодировки

для отправки письма использую следующий код:

function send_message ($subj, $message, $email)
{

$headers = "From: adac84@gmail.com\r\n";
$headers.= "MIME-Version: 1.0\r\n";
$headers.= "Content-Type: text/plain; charset=\"koi8-r\"\r\n";
$headers.= "Content-Transfer-Encoding: 8bit";

$email = "mymail@gmail.com";

if (mail("$email", "$subj", "$message", "$headers"))
{
return(1);
}
else{
return(0);
}

}

Сайт стоит на хосте мультихост, на этом же хосте, но другой сайт отправляет письма нормально.
Поскольку в Друпале кодировка UTF-8, возможно где то скрыт подводный камень....

при использовании перекодировки из Win в KOi, так же не получается...

$subj = convert_cyr_string($subj,"w","k");
$message = convert_cyr_string($message,"w","k");
$header = convert_cyr_string($header ,"w","k");

Комментарии

Аватар пользователя edhel edhel 25 апреля 2008 в 20:27

я писал себе такую функцию для отправки мыла:

<?php
function mail_rus($id, $to, $subject, $message, $from = '') {
if (is_object($to)) {
$_to = $to->mail;
}
elseif (is_numeric($to)) {
$user = user_load(array('uid' => $to));
$_to = $user->mail;
} else {
$_to = $to;
}
drupal_mail(
$id,
$_to,
$subject,
mb_convert_encoding($message, "koi8-r", "UTF-8"),
variable_get('site_mail', $from),
array('Content-Type' => 'text/html; charset=koi8-r')
);
}
?>

Аватар пользователя klim klim 30 марта 2009 в 16:03

"edhel" wrote:
я писал себе такую функцию для отправки мыла:

у меня проблема с таким скриптом:

Language string failed to load: recipients_failed
Ошибка отправки e-mail (от %from к %to).

Аватар пользователя klim klim 31 марта 2009 в 18:32

у меня drupal_mail() отправляет письмо только если соблюдены переменные:

<?php
drupal_mail
($module$key$to$language$params = array(), $from NULL$send TRUE)
?>

Непонятно почему работает пример у edhel, у меня не работает.
за что конкретно отвечает переменная $language ?

как указано выше надо $module и $key, для этого отдельная функция ($module='support', $key='new')

<?php
function support_mail($key, &$message$conf) {
$language $message['language'];
$var['type']=$node->title;
$var['title']=$node->title;
    switch(
$key) {
        case 
'new'
            
$message['subject'] = t($var['type'], $language->language);    
            
$message['body'] = t($var['title'], $language->language);
}
?>

если в переменных $message['subject'] или $message['body'] встречаются элементы типа 'text' или 'текст', то система отсылает письма с не понятной кодировкой.

а вообще создается впечатление что вся проблема в отсутствии Content-Type: text/plain; charset=UTF-8; format=flowed в приходящих письмах (этой строчки реально нет)