PDA

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


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
$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
Спасибо! Сейчас действительно посмотрю, в какой оно кодировке действительно пишет!

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

Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="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
Ну для работы скрипта не подойдет, а для проверки и отладки самое то