Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Проблема отправки письма на русском через форму (https://forum.antichat.xyz/showthread.php?t=106687)

serg-php 17.02.2009 18:52

Проблема отправки письма на русском через форму
 
Значит имеется вот такая форма:


Код:


<!-- TITLE: Отправка запроса -->

<script LANGUAGE="JavaScript">
<!--

function validate() {

var error = "";
var f = document.frm;

if (f.name.value == "") {
  error += "Пожалуйста введите Ваше имя, отчество, чтобы мы смогли обращаться к Вам персонально.\n";
}
if(f.email.value.indexOf(".")<1 || f.email.value.indexOf("@") < 1) {
  error += "Введите Ваш email.\n";
  f.email.focus();
}
if (f.comments.value == "") {
  error += "Задайте вопрос до 1000 символов.\n";
}

  if (!error) return true;
  else{
    msg = "Извините! Произошла ошибка в отправке.\n\n" + error;
    window.alert(msg);
    return false;
  }
}

function CommentsChange(){
  var f = document.frm;
  txtCount(f.comments,f.commentsleft,1000);
}

// -->
</script>

<p class=pagetitle>Обращение к администрации Украинского бизнес-портала</p>

<b>Поля, маркированные жирным шрифом обязательны</b>

<form name=frm method="POST" onSubmit="return validate();">

<input type=hidden name=page value="feedback">

<span class=err>##err_msg##</span>

<p>

<table border=0 cellspacing=0 cellpadding=0 width=415>

<tr><td align="right" valign="top"><b>Имя:</b>&nbsp;&nbsp;</td>

<td><input name=name value="##name##" size="30"></td></tr>


<tr><td>&nbsp;</td><td>&nbsp;Ваше полное имя.</td></tr>

<tr><td colspan=2>&nbsp;</td></tr>

<tr><td align="right" valign="top"><b>Email:</b>&nbsp;&nbsp;</td>

<td><input name=email value="##email##" size=30></td></tr>


<tr><td>&nbsp;</td><td>&nbsp;Email</td></tr>

<tr><td colspan=2>&nbsp;</td></tr>

<tr><td align="right" valign="top">Ваш сайт:&nbsp;&nbsp;</td>
<td><input name=url value="##url##" size=30></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;Адрес сайта  (выборочно)</td></tr>

<tr><td colspan=2>&nbsp;</td></tr>


<tr><td align="right" valign="top">Заинтересовало:&nbsp;&nbsp;</td>
<td><input name=foundus value="##foundus##" size=30></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;Что представляет интерес для Вас на портале?</td></tr>

<tr><td colspan=2>&nbsp;</td></tr>


<tr><td align="right" valign="top"><b>Текст запроса:</b>&nbsp;&nbsp;</td>
<td><textarea wrap="virtual" name=comments rows=7 cols=40 onKeyDown="CommentsChange()" onKeyUp="CommentsChange()">##comments##</textarea>
</td></tr>

<tr><td>&nbsp;</td><td>&nbsp;Введите сообщение,
<input readonly type=text name=commentsleft size=3 maxlength=4 value="1000" tabindex=5000>
 символов осталось</td></tr>

<tr><td colspan=2>

<!-- IF ##EN_IMG_VER## -->

<table border=0>
<tr bgcolor="#ffffff">
<td colspan=3 class=txt8>
Мера предосторожности: <br>
Введите символы на рисунке.
</td>
</tr>

<tr bgcolor="#ffffff">
<td><b>Проверочный код:</td>
<td colspan=2>

<table border=0>
<tr>
<td>
<input name="img_text" size=20>
</td>
<td>
<img src="index.php?page=feedback&mode=image">
</td>
</tr>
</table>

</td>
</tr>
</table>
<!-- ENDIF -->

</td></tr>

<tr><td colspan=2 align=center><br />


<table width="100%">
<tr><td>
<center>
Отправка данной формы регламентирована <a href="index.php?page=extra&pg=terms">Условиями портала</a>
<p>

<center><input type=submit class=button value="Отправить"></a></center></td></tr></table>

</td></tr>
</table>

</form>

<script>
CommentsChange();
</script>


Ввожу текст на аглицком - все работает, на русском болт!

Советовали iconv использовать! Не знаю как и куда его вставить в пхп скрипт!

geezer.code 17.02.2009 19:01

бгг... надо в хидере письма правильно указать кодировку - соответствующую кодировке страницы.

зы как это сделать на пхп не знаю ...

PHP код:

<?php
    $body 
"<html>\n";
    
$body .= "<body style=\"font-family:Verdana, Verdana, Geneva, sans-serif; font-size:12px; color:#666666;\">\n";
    
$body $message;
    
$body .= "</body>\n";
    
$body .= "</html>\n";
   
    
$headers  "From: My site<noreply@my_site.com>\r\n";
    
$headers .= "Reply-To: info@my_site.com\r\n";
    
$headers .= "Return-Path: info@my_site.com\r\n";
    
$headers .= "X-Mailer: Drupal\n";
    
$headers .= 'MIME-Version: 1.0' "\n";
    
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
   
    return 
mail($recipient$subject$message$headers);
?>

$headers .= 'Content-type: text/html; charset=iso-8859-1' .

вот на эту строку смотрим внимательно.

serg-php 19.02.2009 00:04

Спасибо! Сейчас действительно посмотрю, в какой оно кодировке действительно пишет!

Это в теле письма, при запуске на денвере:

PHP код:

Content-Transfer-Encoding8bit
Content
-Typetext/plaincharset="windows-1251" 


[JavaScript] 19.02.2009 00:41

Цитата:

при запуске на денвере:
Вот именно... Советую скрипты, которые используют интернет (особенно Е-мейл) заливать на хостинг, либо на Apache Web Server.

serg-php 21.02.2009 12:25

А в этом есть принципиальное оличие?

Zedi 21.02.2009 13:26

Отличия нету, на денвере эмулятор sendmail, сиди спокойно)

fatalo 21.02.2009 15:12

serg-php,денвер тебе не даст выпустить письмо за пределы твоего компа.Все письма он аккуратно складывает в отдельную папку :)

Zedi 21.02.2009 15:30

Ну для работы скрипта не подойдет, а для проверки и отладки самое то


Время: 14:52