[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите разобраться.
Новачок
Помогите плиз. Очень плохо знаю PHP. У меня на сайте есть форма отправки писем с аттачем. Форма рабочая. Но проблема с кодировкой. Сайт на Wordpress. То есть UTF-8 по умолчанию. Когда отправляю письмо на mail.ru, приходит бред. Подскажите где что переправить и максимально доступно. Буду благодарна. Вод код формы:
<?php 
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
$thm ="Заявка";
$Name = $_POST['Name'];
$Birthday = $_POST['Birthday'];
$Profession = $_POST['Profession'];
$Achievements = $_POST['Achievements'];
$Idol = $_POST['Idol'];
$Hobby = $_POST['Hobby'];
$Phone = $_POST['Phone'];
$msg="Им'я : $Name<br><br>
День рождения :
$Birthday<br><br>
Профессия :
$Profession<br><br>
Достижения :
$Achievements<br><br>
Кумир :
$Idol <br><br>
Хобби :
$Hobby <br><br>
Телефон:
$Phone <br><br><br>
* Отправлено с сайта ,,,,,,,.com"
;
$mail_to = ",,,,,,,,,,,,,,,,,,@mail.ru";
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $msg);
else send_mail($mail_to, $thm, $msg, $picture);
echo "<script>window.location.href='http://,,,,,,,,,,,.com/spasibo.html';</script >";
// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
function send_mail($mail_to, $thema, $html, $path)
{ if ($path) {
$fp = fopen($path,"rb");
if (!$fp)
{ print "Cannot open file";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
}
$name = $_FILES['mail_file']['name']; // в этой переменной надо сформировать имя файла (без всякого пути)
$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: zayavka@,,,,,,,,,,,,,,.com";
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=windows-1251$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL; // раздел между заголовками и телом html-части
$multipart .= chunk_split(base64_encode($html));
$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
$multipart .= chunk_split(base64_encode($file));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($mail_to, $thema, $multipart, $headers))
{return False; //если не письмо не отправлено
}
else { //// если письмо отправлено
return True;
}
exit;
}
?>




Спустя 10 минут, 33 секунды (28.02.2011 - 22:02) Evilsoul написал(а):
здесь кириллица:
 $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";  

а нужно UTF-8
 $multipart .= "Content-Type: text/html; charset=utf-8";  

Спустя 5 минут, 56 секунд (28.02.2011 - 22:08) Новачок написал(а):
Цитата (Evilsoul @ 28.02.2011 - 19:02)
здесь кириллица:
 $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";  

а нужно UTF-8
 $multipart .= "Content-Type: text/html; charset=utf-8";  

Еще хуже. Не отображаеться даже текст:
Им'я :
День рождения :
Профессия :
Достижения :
Кумир :
Хобби :
Телефон:
* Отправлено с сайта


Спустя 52 секунды (28.02.2011 - 22:09) inpost написал(а):
Новачок
Есть раздел "Кодировки" на форуме, в нём прикреплённая тема, посмотри всё там.

Спустя 1 минута, 56 секунд (28.02.2011 - 22:11) Новачок написал(а):
А еще есть googl и книжка php. Сама не разберусь!!!! Помогите ПЛИЗ.

Спустя 17 минут, 40 секунд (28.02.2011 - 22:28) Evilsoul написал(а):
Сами файлы тоже должны быть в кодировке утф-8 без бум, тебе правильно inpost сказал, там есть описанная проблема.
И ещё как видишь
$multipart .= "Content-Type: text/html; charset=utf-8";  
я убрал переменную $EOL потому что не знаю что в ней.

Спустя 22 минуты, 11 секунд (28.02.2011 - 22:50) Новачок написал(а):
Цитата (Evilsoul @ 28.02.2011 - 19:28)
И ещё как видишь
$multipart .= "Content-Type: text/html; charset=utf-8";  
я убрал переменную $EOL потому что не знаю что в ней.

Evilsoul ти бил прав. Но $EOL нужно било оставить. Короче заменила windows-1251 на utf-8 и всьо пошло. Вы СУПЕР. Спасибо!!!!!!! Тему можно закривать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.