Кодировка в форме отправки сообщений

Тема в разделе "PHP", создана пользователем spectailLL, 2 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. spectailLL

    spectailLL Спасибо nulled !

    Регистр.:
    21 ноя 2008
    Сообщения:
    284
    Симпатии:
    187
    Друзья, помогите в коде отправки сообщений с сайта(ниже код .php - файла) прописать кодировку. С этой формы приходят письма, но тот же the bat отказывается автоматом определять кодировку UTF-8, т.к. в служебной части письма нет информации о кодировке вообще (отсутствует строка "Content-type: text/html; charset=\"utf-8\"")
    Помогите прописать кодировку в письме.

    Заранее спасибо.

    Вот код:

    PHP:
    <?php

    if(!$_POST) exit;

    $email $_POST['email'];


    //$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
    if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
        
    $error.="Invalid email address entered";
        
    $errors=1;
    }
    if(
    $errors==1) echo $error;
    else{
        
    $values = array ('name','email','message');
        
    $required = array('name','email','message');
         
        
    $your_email "gmail@gmail.com";
        
    $email_subject "New Message: ".$_POST['subject'];
        
    $email_content "new message:\n";

        
        foreach(
    $values as $key => $value){
          if(
    in_array($value,$required)){
            if (
    $key != 'subject' && $key != 'company') {
              if( empty(
    $_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
            }
            
    $email_content .= $value.': '.$_POST[$value]."\n";
          }
        }
         
        if(@
    mail($your_email,$email_subject,$email_content)) {
            echo 
    'Message sent!'
        } else {
            echo 
    'ERROR!';
        }
    }
    ?>
     
  2. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    кодировка письма указывается в заголовках (4 параметр в ф-и mail)

    заменить
    Код:
    if(@mail($your_email,$email_subject,$email_content)) {
    на
    PHP:
    $headers"MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=UTF-8\r\n";
    $headers .= "From: admin <admin@site.com>\r\n";
    if(@
    mail($your_email,$email_subject,$email_content,$headers)) {
     
    spectailLL нравится это.
  3. spectailLL

    spectailLL Спасибо nulled !

    Регистр.:
    21 ноя 2008
    Сообщения:
    284
    Симпатии:
    187
    Перейти по ссылке я прочёл.

    Можете привести точный код касательно конкретно моего файла?
     
  4. Arnor

    Arnor Создатель

    Регистр.:
    5 фев 2009
    Сообщения:
    36
    Симпатии:
    12
    Код:
    <?php 
    
    if(!$_POST) exit; 
    
    $email = $_POST['email']; 
    
    
    //$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS'; 
    if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){ 
        $error.="Invalid email address entered"; 
        $errors=1; 
    } 
    if($errors==1) echo $error; 
    else{ 
        $values = array ('name','email','message'); 
        $required = array('name','email','message'); 
          
        $your_email = "gmail@gmail.com"; 
        $email_subject = "New Message: ".$_POST['subject']; 
        $email_content = "new message:\n"; 
    
         
        foreach($values as $key => $value){ 
          if(in_array($value,$required)){ 
            if ($key != 'subject' && $key != 'company') { 
              if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; } 
            } 
            $email_content .= $value.': '.$_POST[$value]."\n"; 
          } 
        } 
          
        $headers= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=UTF-8\r\n";
        $headers .= "From: admin <admin@site.com>\r\n";
    
        if(@mail($your_email,$email_subject,$email_content,$headers)) { 
            echo 'Message sent!';  
        } else { 
            echo 'ERROR!'; 
        } 
    } 
    ?>
    Все вроде элементарно. Как-то так.
     
    spectailLL нравится это.
  5. spectailLL

    spectailLL Спасибо nulled !

    Регистр.:
    21 ноя 2008
    Сообщения:
    284
    Симпатии:
    187
    Всех благодарю!​


    Уважаемых админов прошу закрыть тему.
     
Статус темы:
Закрыта.