Sign in to follow this  
Followers 0
endi

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

18 posts in this topic

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

Share this post


Link to post
Share on other sites

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

и почему 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 = '=?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

 

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

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

endi and VIP like this

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

endi likes this

Share this post


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

 

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

files likes this

Share this post


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

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

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);

 

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

workmaster95 likes this

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.