Jump to content

Подправить скрипт


Recommended Posts

  • VIP

Имеется скрипт отправки заявки. На сайте заполняются 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
  • VIP
$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

Делал, но также редактировал эту строчку $subject = '=?koi8-r?B?'.base64_encode($subject).'?='; и ничего не вышло) Возможно вторую зря трогал. Сейчас проверю ваш вариант.

а тут вообще кодировка лишняя...

$subject = base64_encode($subject);

вот так нужно

Link to post
Share on other sites
  • VIP
$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
  • VIP

 

добавьте в начало файла-обработчика вот это строку

header('Content-Type: text/html; charset=utf-8');

 

Всё равно приходит такое:

 

. . .     . . . .            .    . . .   . .   . . . .    .     . . . . . .    . ..     .    . . . .:   .    .    . . . .   .   . . . . .:     . .    . . ..   . . . .    . .    .:   .      . . .

Link to post
Share on other sites

Всё равно приходит такое:

 

. . .     . . . .            .    . . .   . .   . . . .    .     . . . . . .    . ..     .    . . . .:   .    .    . . . .   .   . . . . .:     . .    . . ..   . . . .    . .    .:   .      . . .

Я уже понял, немного тупанул...

Готово.

$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
  • Модератор

Я все понял, но это что?





$msg = convert_cyr_string ($text,w,k);

попробуйте





$msg = $text;

в том числе с вариантами utf-8 и koi8-r

 

P.S. Про convert_cyr_string тут (там и найдете примеры смены кодировок)

Link to post
Share on other sites
  • VIP

Я уже понял, немного тупанул...

Готово.

$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

Приходит пустое письмо с темой "0JDRgNC10L3QtNCwINC60L7RhNC10LzQsNGI0LjQvdGLISAo0YHRgNC+0YfQvdC+KQ==". Про base64 - не знаю, скрипт взят с зарубежного форума и прекрасно работал с английским языком. Как его адаптировать под русский - я уже не верю в это))

Только что отправлял у себя на сайте, все норм.

Если Вам не нужно кодировать заголовок, удалите строку

$subject = base64_encode($subject);

Результат: http://prntscr.com/52qpqr

Link to post
Share on other sites
  • VIP
$msg = $text;

эта строка безмысленная, можно просто сразу $test записать в mail();

 

 

У меня после неё хоть текст письма появился. Эти вообще удалил, иначе название темы письма глючило:

 

$subject = convert_cyr_string ($subject,w,k);

$subject = base64_encode($subject);

 

Общими усилиями всё работает и это главное)

Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...