VIP endi 882 Posted November 3, 2014 VIP Report Share Posted November 3, 2014 Имеется скрипт отправки заявки. На сайте заполняются 3 поля и то, что туда ввели я хочу видеть в указанной почте. С английским языком проблем нет, но русский (не тот что в коде, а из переменных) на указанный емейл приходит каракулями. Хотя та же фраза "Вам поступил запрос" в письме отображается нормально. Не пойму почему такой затык с кодировкой переменных. Кто подскажет, как это исправить - скину 200р на WMR) <?php$email = $_POST['email'];$name = $_POST['fio'];$textz = $_POST['textz'];$text = "Вам поступил запрос. $name, $email, $textz";$to = "емейл";$subject = "Тема письма";$subject = convert_cyr_string ($subject,w,k);$subject = '=?koi8-r?B?'.base64_encode($subject).'?=';$msg = convert_cyr_string ($text,w,k);$headers = 'MIME-Version: 1.0' . "\r\n";$headers .= 'Content-type: text/plain; charset=koi8-r' . "\r\n";$headers .= 'To: '.$to. "\r\n";$headers .= 'From:' .$email. "\r\n";if (mail($to, $subject, $msg, $headers)){echo "<center><br><a href='ссылка'><img src='картинка' ></a></center>";}?> Link to post Share on other sites
qpPeW 191 Posted November 3, 2014 Report Share Posted November 3, 2014 $headers .= 'Content-type: text/plain; charset=koi8-r' . "\r\n"; замените на $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; Link to post Share on other sites
gefard 89 Posted November 3, 2014 Report Share Posted November 3, 2014 А вы в какой кадировке ПОСТ запрос отправляете и почему UTF 8 не использовать? Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 $headers .= 'Content-type: text/plain; charset=koi8-r' . "\r\n"; замените на $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; Делал, но также редактировал эту строчку $subject = '=?koi8-r?B?'.base64_encode($subject).'?='; и ничего не вышло) Возможно вторую зря трогал. Сейчас проверю ваш вариант. Link to post Share on other sites
qpPeW 191 Posted November 3, 2014 Report Share Posted November 3, 2014 Делал, но также редактировал эту строчку $subject = '=?koi8-r?B?'.base64_encode($subject).'?='; и ничего не вышло) Возможно вторую зря трогал. Сейчас проверю ваш вариант. а тут вообще кодировка лишняя... $subject = base64_encode($subject); вот так нужно Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 А вы в какой кадировке ПОСТ запрос отправляете и почему UTF 8 не использовать? Сам php файл сохраняю в UTF-8. Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 $headers .= 'Content-type: text/plain; charset=koi8-r' . "\r\n"; замените на $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; а тут вообще кодировка лишняя...$subject = base64_encode($subject); вот так нужно Обе правки сделаны. В итоге приходит письмо в котором куча пробелов вместо слов и только знаки препинания видны... Link to post Share on other sites
qpPeW 191 Posted November 3, 2014 Report Share Posted November 3, 2014 добавьте в начало файла-обработчика вот это строку header('Content-Type: text/html; charset=utf-8'); Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 добавьте в начало файла-обработчика вот это строку header('Content-Type: text/html; charset=utf-8'); Всё равно приходит такое: . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .: . . . . . . . . . . . .: . . . . .. . . . . . . .: . . . . Link to post Share on other sites
qpPeW 191 Posted November 3, 2014 Report Share Posted November 3, 2014 Всё равно приходит такое: . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .: . . . . . . . . . . . .: . . . . .. . . . . . . .: . . . . Я уже понял, немного тупанул... Готово. $email = $_POST['email']; $name = $_POST['fio']; $textz = $_POST['textz']; $text = "Вам поступил запрос. $name, $email, $textz"; $to = "mail@domain.com"; $subject = "Тема письма"; $subject = base64_encode($subject); $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; $headers .= 'To: '.$to. "\r\n"; $headers .= 'From:' .$email. "\r\n"; if(mail($to, $subject, $text, $headers)) { echo "<center><br><a href='ссылка'><img src='картинка' ></a></center>"; } Кодировка сбивалась потому что Вы пытались изменить ее с помощью функции convert_cyr_string, а это лишнее. А зачем Вам заголовок сообщения кодировать в base64 ? Link to post Share on other sites
Модератор files 2843 Posted November 3, 2014 Модератор Report Share Posted November 3, 2014 Я все понял, но это что? $msg = convert_cyr_string ($text,w,k); попробуйте $msg = $text; в том числе с вариантами utf-8 и koi8-r P.S. Про convert_cyr_string тут (там и найдете примеры смены кодировок) VIP and endi 2 Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 Я уже понял, немного тупанул... Готово. $email = $_POST['email']; $name = $_POST['fio']; $textz = $_POST['textz']; $text = "Вам поступил запрос. $name, $email, $textz"; $to = "mail@domain.com"; $subject = "Тема письма"; $subject = base64_encode($subject); $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; $headers .= 'To: '.$to. "\r\n"; $headers .= 'From:' .$email. "\r\n"; if(mail($to, $subject, $text, $headers)) { echo "<center><br><a href='ссылка'><img src='картинка' ></a></center>"; } Кодировка сбивалась потому что Вы пытались изменить ее с помощью функции convert_cyr_string, а это лишнее. А зачем Вам заголовок сообщения кодировать в base64 ? Приходит пустое письмо с темой "0JDRgNC10L3QtNCwINC60L7RhNC10LzQsNGI0LjQvdGLISAo0YHRgNC+0YfQvdC+KQ==". Про base64 - не знаю, скрипт взят с зарубежного форума и прекрасно работал с английским языком. Как его адаптировать под русский - я уже не верю в это)) Link to post Share on other sites
qpPeW 191 Posted November 3, 2014 Report Share Posted November 3, 2014 Приходит пустое письмо с темой "0JDRgNC10L3QtNCwINC60L7RhNC10LzQsNGI0LjQvdGLISAo0YHRgNC+0YfQvdC+KQ==". Про base64 - не знаю, скрипт взят с зарубежного форума и прекрасно работал с английским языком. Как его адаптировать под русский - я уже не верю в это)) Только что отправлял у себя на сайте, все норм. Если Вам не нужно кодировать заголовок, удалите строку $subject = base64_encode($subject); Результат: http://prntscr.com/52qpqr endi 1 Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 $msg = $text; Вот это помогло в связке с прошлыми правками. files и qpPeW - чтоб было честно разделю приз на двоих - обоим скину по 100руб. Высылайте wmr-кошельки. files 1 Link to post Share on other sites
qpPeW 191 Posted November 3, 2014 Report Share Posted November 3, 2014 $msg = $text; эта строка безмысленная, можно просто сразу $test записать в mail(); Link to post Share on other sites
VIP endi 882 Posted November 3, 2014 Author VIP Report Share Posted November 3, 2014 $msg = $text; эта строка безмысленная, можно просто сразу $test записать в mail(); У меня после неё хоть текст письма появился. Эти вообще удалил, иначе название темы письма глючило: $subject = convert_cyr_string ($subject,w,k); $subject = base64_encode($subject); Общими усилиями всё работает и это главное) workmaster95 1 Link to post Share on other sites
VIP 3 Posted November 5, 2014 Report Share Posted November 5, 2014 files правильно подметил Link to post Share on other sites
VIP 3 Posted November 5, 2014 Report Share Posted November 5, 2014 Эту строчку можно удалить $msg = $text; А в этой прописать $text вместо $msg if (mail($to, $subject, $msg, $headers)) Link to post Share on other sites
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now