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


Автор: uzverok 28.1.2010, 20:25
Возникла проблема при отправке почты с сервера(операционка- Линукс), пробовал даже вручную прописывать в ini_set путь к смтп, ничего не дало, в чем может быть проблема? Как я понял если на хостинге все правильно настроено, должно работать автоматом. Вот текст тестового скрипта:
Код

if($_POST['submit']) {
       $title = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
       $mess =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
       $to = 'mail';
       $from='mail';
       if(mail($to, $title, $mess, 'From:'.$from))
       echo 'Сообщение отправлено!';

}

Автор: NLspieler 29.1.2010, 08:33
А что происходит при попытке отправить сообщения? Появляются ли сообщения об ошибке?
Может быть скрипт говорит, что письмо отправлено, но оно не приходит?



$to = 'mail';
$from='mail';
И еще, может быть все дело в том, что в поле $to ты не прописываешь корректный адрес. 



Автор: Guedda 29.1.2010, 12:31
Описывайте проблему полностью, пожалуйста...

И, да. Ошибка в 17 строке.

Автор: uzverok 29.1.2010, 13:12
Цитата(NLspieler @  29.1.2010,  08:33 Найти цитируемый пост)
А что происходит при попытке отправить сообщения? Появляются ли сообщения об ошибке?
Может быть скрипт говорит, что письмо отправлено, но оно не приходит?

При отправке сообщения, если проверяю через if, ничего не выдает, тоесть не отправляет сообщение, никаких ошибок тоже не выдает(пробовал включать отчеты- результат тот же).

Цитата(NLspieler @  29.1.2010,  08:33 Найти цитируемый пост)
И еще, может быть все дело в том, что в поле $to ты не прописываешь корректный адрес. 

Задаю существующий ящик, пробовал и на gmail, и на mail.ru


Цитата(Guedda @  29.1.2010,  12:31 Найти цитируемый пост)
И, да. Ошибка в 17 строке. 

Там же всего 9 строк..

З.Ы.: хостер- megabyet.net, может у кого была такая же проблема?

Автор: NLspieler 29.1.2010, 14:04
Попробуй использувать эту функцию для отправки емэйлов. 
У меня она отлично работает. Отсылает пиьма в UTF8 кодировке
Код

function mail_utf8 (    $name_from,   // Имя отправителя
                        $email_from,  // email отправителя
                        $name_to,     // Имя получателя
                        $email_to,    // email получателя 
                        $subject,     // Заголовок пиьсьма
                        $body         // Текст письма
                    ) 
{ 
    $data_charset = 'UTF-8' ; // кодировка переданных данных 
    $send_charset = 'UTF-8' ; // кодировка письма 
    $to = mime_header_encode($name_to, $data_charset, $send_charset) . ' <' . $email_to . '>' ; 
    $subject = mime_header_encode($subject, $data_charset, $send_charset) ; 
    $from =  mime_header_encode($name_from, $data_charset, $send_charset) .' <' . $email_from . '>' ; 
    if($data_charset != $send_charset) 
    { 
        $body = iconv($data_charset, $send_charset, $body); 
    } 
    $headers = "From: $from\r\n"; 
    $headers .= "Content-type: text/plain; charset=$send_charset\r\n"; 

    return mail($to, $subject, $body, $headers); 
} 

function mime_header_encode($str, $data_charset, $send_charset) 
{ 
    if($data_charset != $send_charset) 
    { 
        $str = iconv($data_charset, $send_charset, $str); 
    } 
    return '=?' . $send_charset . '?B?' . base64_encode($str) . '?='; 
} 

Автор: s0lman 29.1.2010, 14:59
uzverok, смотреть в папку "Спам" не пробовали? (Иногда помогает  smile )

Автор: uzverok 29.1.2010, 15:07
Цитата(NLspieler @  29.1.2010,  14:04 Найти цитируемый пост)
Попробуй использувать эту функцию для отправки емэйлов. 
У меня она отлично работает. Отсылает пиьма в UTF8 кодировке

Спасибо за скрипт, но он тоже не работает, скорее всего проблема с сервером..  smile Если на этом сервере неправильно настроен смтп, я могу отправлять почту с другого сервера смтп?

Цитата(s0lman @  29.1.2010,  14:59 Найти цитируемый пост)
uzverok, смотреть в папку "Спам" не пробовали? (Иногда помогает  smile ) 

Тоже сначала так подумал, проверил уже все папки smile  

Автор: Sentox 30.1.2010, 13:16
нет, если if не срабатывает при отправке - значит ошибка в функции, спам спамом но условие не происходит!

Автор: uzverok 30.1.2010, 13:45
Я могу подключить другой сервер смтп(например mail.ru) через ini_set? Только-что нашел сайт на этом же хосте, нашел раздел обратной связи написал сообщение админу и при отправке выбило ошибку, значит все-таки дело в сервере.. Уже несколько раз писал в службу поддержки- никаких результатов, как мне решить эту проблему?  

Автор: ZlojEzh 30.1.2010, 15:55
Попробуйте добавить в письмо заголовки Return-Path и Errors-To со своим e-mail и еще раз протестировать отправку.
Возможно получите интересную информацию.

А для подключения к другому smtp проще всего воспользоваться классом PHPMailer.

Автор: uzverok 31.1.2010, 11:24
Цитата(ZlojEzh @  30.1.2010,  15:55 Найти цитируемый пост)
Попробуйте добавить в письмо заголовки Return-Path и Errors-To со своим e-mail и еще раз протестировать отправку.
Возможно получите интересную информацию.

Попробовал, никаких ошибок не выдает.. Вчера достучался в службу поддержки, посоветовали использовать смтп gmail, создал учетку, прописал MX, проверил статус, все прописано, но отправка почты так и не заработала  smile  Подскажите, какие настройки нужно прописывать в пхп для правильной работы. 

Автор: sTa1kEr 31.1.2010, 16:38
Функция mail() не использует SMTP сервер напрямую, вместо этого она использует sendmail. Соответственно, вам нужно убедится, что http://ru2.php.net/manual/en/mail.configuration.php#ini.sendmail-path указан верно. Если он указан верно, то проблемы в настройках самого sendmail'а.

Для отправки писем напрямую через SMTP сервер, нужно использовать сторонние библиотеки. 

Автор: uzverok 31.1.2010, 19:51
Установил PHPMailer и все заработало!  smile 

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