В общем при отправке письма, появляются кракозябры, т.е. не совпадают кодировки
для отправки письма использую следующий код:
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");
Комментарии
я писал себе такую функцию для отправки мыла:
<?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')
);
}
?>
2 edhel
Спасибо большое!!!
Не знал что есть drupal_mail()
Все заработало.
Во во. <?php convert_cyr_string() ?> с UTF-8 не работает.
у меня проблема с таким скриптом:
Language string failed to load: recipients_failed
Ошибка отправки e-mail (от %from к %to).
у меня 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 в приходящих письмах (этой строчки реально нет)
Ура! Проблема решается:
http://www.drupal.ru/node/24747
drupal_mail поменялась в 6-ке
ок, понятно.