Jump to content
Sign in to follow this  
endi

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

Recommended Posts

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

Share this post


Link to post
Share on other sites
$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).'?='; и ничего не вышло) Возможно вторую зря трогал. Сейчас проверю ваш вариант.

Share this post


Link to post
Share on other sites

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

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

$subject = base64_encode($subject);

вот так нужно

Share this post


Link to post
Share on other sites

А вы в какой кадировке ПОСТ запрос отправляете

и почему UTF 8 не использовать?

 

Сам php файл сохраняю в UTF-8.

Share this post


Link to post
Share on other sites
$headers .= 'Content-type: text/plain; charset=koi8-r' . "\r\n";

замените на

$headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";

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

$subject = base64_encode($subject);

вот так нужно

 

Обе правки сделаны. В итоге приходит письмо в котором куча пробелов вместо слов и только знаки препинания видны...

Share this post


Link to post
Share on other sites

 

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

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

 

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

 

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

Share this post


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 ?

Share this post


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 тут (там и найдете примеры смены кодировок)

Share this post


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 ?

 

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

Share this post


Link to post
Share on other sites

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

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

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

$subject = base64_encode($subject);

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

Share this post


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

 

Вот это помогло в связке с прошлыми правками. files и qpPeW - чтоб было честно разделю приз на двоих - обоим скину по 100руб. Высылайте wmr-кошельки.

Share this post


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

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

 

 

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

 

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

$subject = base64_encode($subject);

 

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

Share this post


Link to post
Share on other sites

Эту строчку можно удалить

$msg = $text;

А в этой прописать $text вместо $msg

if (mail($to, $subject, $msg, $headers))

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...