Страница 1 из 1

Обработчик письма php,- кракозябы.....

Добавлено: 2015-02-22 14:18:38
Nor_ton
Добрый день уважаемые мастера,помогите исправить не корректно работающий обработчик письма php, дело в том что письмо отправляет..но приходит с
крякозяблями....вот пример;
To: mail@mail.ru
Subject: =?utf-8?B?V2Vic2l0ZSBFbWFpbA==?=
X-PHP-Originating-Script: 0:send.php
MIME-Version: 1.0
Content-type: text/plain; charset=utf-8
From: <>
Reply-To:

New Website Email
txtname: ???»?µ?????°?????€
txtphone: 345-67-789-34
txtemail: adminATmail.ru
txtmessage: ???€?????µ?€???° ???‚???€?°?????? ???????????° ?? ???°???‚?°


А вот сам обработчик send php:
<?php

$sendTo = "mail@mail.ru";
$subject = "Website Email";
$greeting = "New Website Email";

// *****************
// Ќј—“–ќ…*» конечный пользователь
// *****************

$details = "";
$passed = true;

foreach($_POST as $nam => $val) {

// Ћюбое поле, необходимое имеет "-ќб¤зательные" в конце
// »м¤ атрибута и проходит через проверки JavaScript
$nam = str_replace("-required", "", $nam);

// чистые возможные инъекции
$val = str_replace(array("\r", "\n", "%0a", "%0d", '', stripslashes($val));

// искать возможные инъекций и вырватьс¤ из цикла, если найден
if(strpos($val, "MIME-Version" !== false || strpos($val, "Content-Type: text/plain; charset=UTF-8\n " !== false) {

$passed = false;
break;

}

// захватить им¤ и адрес электронной почты и строить все остальное в теле сообщени¤ электронной почты
switch($nam) {

case "name":

// вырезать любые "@" символы дл¤ возможных инъекций
$fromName = str_replace("@", "AT", $val);

$details .= $nam . ": " . $fromName . "\n";

break;

case "email":

$emailFrom = $val;
$details .= $nam . ": " . $emailFrom . "\n";

break;

default:

$details .= $nam . ": " . str_replace("@", "AT", $val) . "\n";

}

}

/// отправить по электронной почте
if($passed) {

$details = $greeting . "\n\n" . $details;
$subject = '=?utf-8?B?' . base64_encode($subject) . '?=';

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
$headers .= 'From: ' . $emailFrom . ' <' . $fromName . '>' . "\r\n";
$headers .= 'Reply-To: ' . $emailFrom . "\r\n";

mail($sendTo, $subject, $details, $headers);

}
Друзья, если можно ещё подскажите что нужно дописать что бы при отправки выводилось - Ваше письма успешно отправлено, или не отправлено!
За ранее спасибо за понимания и помощь,не откажите друзья!!!

Обработчик письма php,- кракозябы.....

Добавлено: 2015-05-21 18:28:03
Alex Keda
Проверьте что все кодировки совпадают - скрипта и заголовков письма
Ну и что приходит в скрипт текст в нужной кодировке.