Как в данном случае задать кодировку в php форме?

Здравствуйте! Помогите, пожалуйста разобраться.
Использую для формы отправки данных этот скрипт
<?php
$name = $_POST['name'];
$phone = $_POST['phone'];
$area = $_POST['area'];
$job = $_POST['job'];
$to = 'mail@inbox.ru'; 
$email_subject = "Тема";
$email_body = "Новая заявка\n\n"."Контактные данные\n\nИмя: $name\n\nТелефон: $phone\n\nПлощадь: $area\n\nО компании: $job";
$headers = "From: nsk-tlk@traktir.ru\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";	
mail($to,$email_subject,$email_body,$headers);
return true;	
?>


На outlook приходят кракозябры. Я так понимаю, дело в кодировке, но
$headers .= "Content-type: text/html; charset=\"utf-8\"";
и
 windows-1251.

не помогает.
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 2
AndrewHaze
@AndrewHaze
Умею гуглить яндексом
Возможно поможет, у меня работает... (правда несколько вырвано из контекста)
function mime_header_encode($str, $data_charset, $send_charset) { // функция прeoбрaзoвaния зaгoлoвкoв в вeрную кoдирoвку  		
	if($data_charset != $send_charset) 		
	$str=iconv($data_charset,$send_charset.'//IGNORE',$str); 		
	return ('=?'.$send_charset.'?B?'.base64_encode($str).'?='); 	
} 	
/* супeр клaсс для oтпрaвки письмa в нужнoй кoдирoвкe */ 	
class TEmail { 	
	public $from_email; 	
	public $from_name; 	
	public $to_email; 	
	public $to_name; 	
	public $subject; 	
	public $data_charset='UTF-8'; 	
	public $send_charset='windows-1251'; 	
	public $body=''; 	
	public $type='text/plain';  
		
	function send(){ 		
		$dc=$this->data_charset;
		$sc=$this->send_charset;
		$enc_to=mime_header_encode($this->to_name,$dc,$sc).' <'.$this->to_email.'>';
		$enc_subject=mime_header_encode($this->subject,$dc,$sc);
		$enc_from=mime_header_encode($this->from_name,$dc,$sc).' <'.$this->from_email.'>';
		$enc_body=$dc==$sc?$this->body:iconv($dc,$sc.'//IGNORE',$this->body);
		$headers='';
		$headers.="Mime-Version: 1.0\r\n";
		$headers.="Content-type: ".$this->type."; charset=".$sc."\r\n";
		$headers.="From: ".$enc_from."\r\n";
		return mail($enc_to,$enc_subject,$enc_body,$headers);
	}
}

...

$name = htmlspecialchars($_POST["name"]); // пишeм дaнныe в пeрeмeнныe и экрaнируeм спeцсимвoлы
$email = htmlspecialchars($_POST["email"]);
$subject = htmlspecialchars($_POST["subject"]);
$message = htmlspecialchars($_POST["message"]);
$box = htmlspecialchars('<адрес куда>');
			
$emailgo = new TEmail; // инициaлизируeм супeр клaсс oтпрaвки
$emailgo->from_email = $email; // oт кoгo
$emailgo->from_name = $name;
$emailgo->to_email = $box; // кoму
$emailgo->to_name = 'Admin';
$emailgo->subject = $subject; // тeмa
$emailgo->body= $message; // сooбщeниe
$emailgo->send(); // oтпрaвляeм
Ответ написан
Комментировать
Ну, у вас скорее text/plain, а кодировку попробуйте поменять, например на что-то ещё, например windows-1251.
По крякозябрам можно проверить, в какой кодировке реально отправляются письма у вас.
Ещё вот: www.yaap.info/page/php-mail-otpravka-soobshhenij
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы