Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > mail() не работает!


Автор: navodri 27.6.2009, 13:58
На форуме я нашел несколько ответов по моему вопросу, но они немного размыты. Можете дать конкретные ответы, в чем причины такого поведения и рекомендации, что делать лично на моем примере? Хочу заметить, что на виртуалке (в Денвере) этот код работает, а на хосте нет.

Вот код, который не работает на моем сайте:

Код

<?php
error_reporting(0);

header("Content-Type: text/html; charset=\"windows-1251\""); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

//Указываем свой почтовый адрес
$email_it_to = "vsiliy@pupkin.net";

//Переменные
$rnd = $_POST['rnd'];
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$body = $_POST['body'];
$valid = $_POST['valid'];

function uft8html2utf8( $s ) {    
if ( !function_exists('uft8html2utf8_callback') ) {    
function uft8html2utf8_callback($t) {    
$dec = $t[1];    
           if ($dec < 128) {    
             $utf = chr($dec);    
           } else if ($dec < 2048) {    
             $utf = chr(192 + (($dec - ($dec % 64)) / 64));    
             $utf .= chr(128 + ($dec % 64));    
           } else {    
             $utf = chr(224 + (($dec - ($dec % 4096)) / 4096));    
             $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));    
             $utf .= chr(128 + ($dec % 64));    
           }    
           return $utf;
}    
}    
return preg_replace_callback('|&#([0-9]{1,});|', 'uft8html2utf8_callback', $s );    
}

function utf8RawUrlDecode($source) {
    $decodedStr = "";
    $pos = 0;
    $len = strlen($source);
    while ($pos < $len) {
        $charAt = substr($source, $pos, 1);
        if ($charAt == '%') {
            $pos++;
            $charAt = substr($source, $pos, 1);
            if ($charAt == 'u') {
                // we got a unicode character
                $pos++;
                $unicodeHexVal = substr($source, $pos, 4);
                $unicode = hexdec($unicodeHexVal);
                $entity = "&#". $unicode . ';';
                $decodedStr .= utf8_encode($entity);
                $pos += 4;
            }
            else {
                // we have an escaped ascii character
                $hexVal = substr($source, $pos, 2);
                $decodedStr .= chr(hexdec($hexVal));
                $pos += 2;
            }
        } else {
            $decodedStr .= $charAt;
            $pos++;
        }
    }
    return $decodedStr;
}

if(!isset($rnd) || !isset($name) || !isset($email) || !isset($subject) || !isset($body) || !isset($valid)) {
 die();
}
    $email_from = $email;

    $email_subject = "Тема: ".iconv('UTF-8','windows-1251',uft8html2utf8(utf8RawUrlDecode(stripslashes($subject))));

    $email_message  = "Отправитель: ".iconv('UTF-8','windows-1251',uft8html2utf8(utf8RawUrlDecode(stripslashes($name))))."\n";
    $email_message .= "Дата отправки: ".date("d/m/Y").", время: ".date("H:i")."\n\n";
    $email_message .= "======== НАЧАЛО СООБЩЕНИЯ =======\n";
    $email_message .= iconv('UTF-8','windows-1251',uft8html2utf8(utf8RawUrlDecode(stripslashes($body))));
    $email_message .= "\n======== КОНЕЦ СООБЩЕНИЯ ========";

    $headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n".'X-Mailer: PHP/'.phpversion();

    mail($email_it_to, $email_subject, $email_message, $headers);
 die();
?>

Автор: bars80080 27.6.2009, 14:16
а на хосте почта есть?

Автор: navodri 22.7.2009, 12:49
На хосте есть ихняя почта, что использует CGI. Я же использую Ajax + PHP. Раньше работала, а теперь - фонарь! Чё делать?

Автор: lelik133 22.7.2009, 13:36
если не работает то наверно стоит заняться debug`ом.
создайте файлик с единственной конструкцией mail() и отправьте тестовое сообщение.  Ну и error_reporting(E_ALL) коненчо. Посмотрите какие ошибки выводит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)