Кракозябры при отправке письма! Help.

Статус
В этой теме нельзя размещать новые ответы.

E-Rix

Постоялец
Регистрация
16 Янв 2009
Сообщения
81
Реакции
35
Такая ситуация, что только не перепробывал и менял кодировку в
htaccess и добавил utf-8 везде где можно и ни фига.
Установлен Wordpress, в забугорной теме установлена форма, в которое вводится емайл и прописанный текст(в админке темы) отправляется по указанному адресу. Только письма приходят всем кракозябрами типа такого б€бƒббаКаИаЙ аПаОаПаОаЗаЖаЕ аЗаАб€аАаБаОб‚аАаЕб‚.

Насколько понял, что-то здесь не так.

<?php

include_once('../../../wp-load.php');
include_once('functions/theme.php');

$options = get_option('plugin_options');

$sendtoemail = $options['emaillink'];

//declare our variables
$name = $_POST['name'];
$email = $_POST['email'];
$message = nl2br($_POST['message']);
//get todays date
$todayis = date("l, F j, Y, g:i a") ;
//set a title for the message
$subject = "Message from Your Website";
$body = "\nFrom: $name\n\n\n\n$message";
$headers = 'From: '.$email.'' . "\r\n" .
'Reply-To: '.$email.'' . "\r\n" .
'Content-type: text/html; charset=utf-8
'X-Mailer: PHP/' . phpversion();

//put your email address here
mail($sendtoemail, $subject, $body, $headers);
?>
<!--Display a thankyou message in the callback -->
<div id="confirmation">
<h3><?php echo $options['thankyou_header']; ?></h3>
<p><?php echo $options['thankyoumsg']; ?></p>
</div>
 
Попробуй такую функцию:
Код:
function XMail($from, $to, $subj, $text, $filename, $file)
    {
    if (!empty($file)){$f = fopen($file,"rb");} //смотрим есть ли файл
 
    $un = strtoupper(uniqid(time())); // задаем разделитель
    $head = "From: Autobot <$from>\n";
    $head .= "To: $to\n";
    $head .= "Subject: $subj\n";
    $head .= "X-Mailer: PHPMail Tool\n";
    $head .= "Reply-To: $from\n";
    $head .= "Mime-Version: 1.0\n";
    $head .= "Content-Type:multipart/mixed;"; //показвыаем заголок
    $head .= "boundary=\"----------".$un."\"\n\n";
    $zag = "------------".$un."\nContent-Type: text/plain; charset=utf-8\n";
    $zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
    $zag .= "------------".$un."\n";
    if (!empty($file)){//если все-таки файл был, то пересылаем его
    $zag .= "Content-Type: application/octet-stream;";
    $zag .= "name=\"".basename($filename)."\"\n";
    $zag .= "Content-Transfer-Encoding:base64\n";
    $zag .= "Content-Disposition:attachment;";
    $zag .= "filename=\"".basename($filename)."\"\n\n";
    $zag .= chunk_split(base64_encode(fread($f,filesize($file))))."\n";
    $zag .= "------------".$un."\n";
    }
    if (!@mail("$to", "$subj", $zag, $head)) //проверка как отработает функция...
    return 0;
    else
    return 1;
    }

Если не поможет, проверь в какой кодировке у тебя файл с кодом.
 
Не помогло, взгляни еще сюда
header.php

<?php
include 'functions/theme.php';
$options = get_option('plugin_options');
global $feed;
global $twitterFeed;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "Для просмотра ссылки Войди или Зарегистрируйся">
<html xmlns="Для просмотра ссылки Войди или Зарегистрируйся">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $options['site_title']; ?></title>
<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/css/reset.css" type="text/css" />
<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/css/supercharged.css" type="text/css" />
<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/css/colorbox.css" type="text/css" />
<link href='Для просмотра ссылки Войди или Зарегистрируйся' rel='stylesheet' type='text/css' />
<!-- CHROME -->
<link href="<?php bloginfo('template_directory'); ?>/css/chrome.css" rel="stylesheet" type="text/css" />
<!-- SAFARI -->
<link href="<?php bloginfo('template_directory'); ?>/css/safari.css" rel="stylesheet" type="text/css" />
<!--[if IE 7]>
<link href="<?php bloginfo('template_directory'); ?>/css/ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if IE 8]>
<link href="<?php bloginfo('template_directory'); ?>/css/ie8.css" rel="stylesheet" type="text/css" />
<script src="Для просмотра ссылки Войди или Зарегистрируйся"></script>
<![endif]-->
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.countdown.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.colorbox-min.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/supercharged.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//Setting trigger, content and dimensions of contact box overlay
$(".contactusicon").colorbox({width:"600px", height:"580px", initialWidth:"600px", initialHeight:"580px", speed:"2000", inline:true, href:"#contactus"});
});
</script>
<script type="text/javascript">
//<![CDATA[
var secondsStr = "<?php echo $seconds; ?>";
var threeDig = "<?php echo $options['displaythreedigits'] ?>";
//]]>
</script>
<script type="text/javascript">
$(document).ready(function() {
$('.fuel_right').animate({
width: '<?php $result=(($options['progress']/100)*(305)); if ( (round($result)) < 18 ) { $result == 18; }; echo round($result); ?>px',
height: '133px'
}, 2100, function() {
$(".percent").fadeIn(1000);
});
});
</script>
<script type="text/javascript">
//NEWSLETTER SIGNUP FORM
$(document).ready(function(){

//submittimg contact us form
$('#signupform').submit( function(){

//validating the form
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var email = document.getElementById('email');

if (!filter.test(email.value)) {
$('.signup_error').show();
} else {$('.signup_error').hide();}

if ( (!filter.test(email.value)) ){
return false;
}

if ( (filter.test(email.value)) ) {

//show the loader
$('.signuploader').append($('.signupbar'));
$('.signupbar').css({display:'block'});

//send ajax request
$.post('<?php bloginfo('template_directory'); ?>/sc_signup.php',{email:$('#email').val(), signo:$('#signo').val()},

//return data
function(data){
//hide the graphic
$('.signupbar').css({display:'none'});
$('.signuploader').append(data);

document.getElementById("submit").disabled = true;
document.getElementById("email").disabled = true;

});

//stay on the page
return false;
}
});


});
</script>
<script type="text/javascript">
//CONTACT US FORM
// <![CDATA[
$(document).ready(function(){

//submittimg contact us form
$('.contactUsForm').submit( function(){

//validating the form
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var email = document.getElementById('e-mail');
if (!filter.test(email.value)) {
$('.email-missing').show();
} else {$('.email-missing').hide();}
if (document.cform.name.value == "") {
$('.name-missing').show();
} else {$('.name-missing').hide();}
if (document.cform.message.value == "") {
$('.message-missing').show();
} else {$('.message-missing').hide();}
if ((document.cform.name.value == "") || (!filter.test(email.value)) || (document.cform.message.value == "")){
return false;
}

if ((document.cform.name.value != "")&&(filter.test(email.value))&&(document.cform.message.value != "")) {

//hide form fields
$('.contactUsForm').hide();

//show the loader
$('.loader').append($('.bar'));
$('.bar').css({display:'block'});

//send ajax request
$.post('<?php bloginfo('template_directory'); ?>/sc_contactus.php',{name:$('#name').val(),
email:$('#e-mail').val(),
message:$('#message').val()},

//return data
function(data){
//hide the graphic
$('.bar').css({display:'none'});
$('.loader').append(data);
});

//waits 2000, then closes the form and fades out
setTimeout('parent.$.fn.colorbox.close()', 5000);

//stay on the page
return false;
}
});


});
// ]]>
</script>
</head>

<body class="<?php echo $options['color_scheme'] ?>">

Вот вся тема Wordpress, так думаю понятнее, там для разбирающего человека секунд 30 от силы, тема вообще одностраничная, а форма отправки писем кракозябрами отправляет(
Для просмотра ссылки Войди или Зарегистрируйся
 
У тебя письма отправляются в кодировке ISO-8859-5, можно попробовать перекодировать их в utf8, например используя функцию iconv(); или конструкцию типа:
Код:
$subject_send= '=?utf8?B?'.base64_encode($subject_send).'?=';
А вообще, чтобы не было проблем с почтовиками желательно использовать кодировку KOI8-R
 
Куда данную конструкцию вставить? :) Милый человек!
 
Вместо:
Код:
$body = "\nFrom: $name\n\n\n\n$message";
Добавь:
Код:
$message= '=?utf8?B?'.base64_encode($message).'?=';
$body = "\nFrom: $name\n\n\n\n$message";
 
безрезультатно(
Не могу понять в чем проблема , уже везде где можно все поменял, а русские буквы не отправляет.
тема весит всего 156Кб, взгляни.
Для просмотра ссылки Войди или Зарегистрируйся

Все проблема решена, загвоздка была в клиенте, стояла кодировка виндовс! На почту после манипуляций все приходило хорошо.

На яндекс, гугл приходит все хорошо, а на mail все равно с кракозябрами. Шо за фигня?
 
в файле темы написано <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />. а ты смотрел, какой charset выдает сервер в заголовке ответа для этой страницы? проверь. думаю, либо никакой, либо не utf-8. тогда проблема могла быть в том, что браузер отсылает данные формы не в utf-8, и потом эти данные уходят в письме, помеченном как utf-8. соответственно при просмотре письма ничего толкового не будет видно, т.к. указана неправильная кодировка. сохрани письмо в файл, открой его в редакторе и посмотри, какую кодировку определит редактор. если не utf-8 - смотри на заголовки http ответа.

прописать utf-8 в заголовке ответа можно так
header('Content-Type: text/html;charset=utf-8'); // желательно первой строкой скрипта
 
попробуй сам файлик в Для просмотра ссылки Войди или Зарегистрируйсяперекодировать через "Кодировки -> Кодировать в UTF-8 (без BOM)"
 
Проблема решена, не тот файл редактировал, после шаманством над файлом signup.php все встало на свои места.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху