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

Discussion in 'PHP' started by serg-php, 17 Feb 2009.

  1. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    Значит имеется вот такая форма:


    Code:
    
    <!-- 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 использовать! Не знаю как и куда его вставить в пхп скрипт!
     
    #1 serg-php, 17 Feb 2009
    Last edited: 17 Feb 2009
  2. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    бгг... надо в хидере письма правильно указать кодировку - соответствующую кодировке страницы.

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

    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' .

    вот на эту строку смотрим внимательно.
     
    #2 geezer.code, 17 Feb 2009
    Last edited: 17 Feb 2009
  3. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    Спасибо! Сейчас действительно посмотрю, в какой оно кодировке действительно пишет!

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

    PHP:
    Content-Transfer-Encoding8bit
    Content
    -Typetext/plaincharset="windows-1251"
     
    #3 serg-php, 18 Feb 2009
    Last edited: 18 Feb 2009
  4. [JavaScript]

    [JavaScript] Member

    Joined:
    14 Feb 2009
    Messages:
    45
    Likes Received:
    22
    Reputations:
    1
    Вот именно... Советую скрипты, которые используют интернет (особенно Е-мейл) заливать на хостинг, либо на Apache Web Server.
     
  5. serg-php

    serg-php Elder - Старейшина

    Joined:
    28 Jan 2008
    Messages:
    313
    Likes Received:
    9
    Reputations:
    0
    А в этом есть принципиальное оличие?
     
  6. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Отличия нету, на денвере эмулятор sendmail, сиди спокойно)
     
  7. fatalo

    fatalo Elder - Старейшина

    Joined:
    15 May 2008
    Messages:
    45
    Likes Received:
    46
    Reputations:
    5
    serg-php,денвер тебе не даст выпустить письмо за пределы твоего компа.Все письма он аккуратно складывает в отдельную папку :)
     
  8. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Ну для работы скрипта не подойдет, а для проверки и отладки самое то