не приходят письма mail()

E-body

Мой дом здесь!
Регистрация
6 Сен 2007
Сообщения
992
Реакции
342
написал (на основе готовой) контактную форму заказов для одного сайта
при нажатии "отправить" пишет якобы отправилось но на самом деле нет. что не так в этом скрипте? Поправьте новичка в php
 
попробовал на денвере все работает письма отправляются на мыло
может на хостинге какой косяк с настройками

ЗЫ на серваке тоже проверил все пришло как надо так что тереби хостера
 
Могут быть причиной непонятки с заголовками.
Попробуй добавить:
PHP:
$headers .= "From:  <".$email.">\r\n";
У меня подобная проблема решилась добавлением
PHP:
$headers  = "Content-type: text/html; charset=windows-1251 \r\n";
$headers .= "From:  <".$email.">\r\n";
 
как-то так...

Я бы на вашем месте в функцию mail() загонял переменные, а не на прямую текстом. Например, так

PHP:
$to      = 'test@moi-mail.com';
$subject = '=?Windows-1251?B?'.base64_encode($name).'?=';
$message = 'ФИО: '.$name.'\nСообщение: '.$message.'\n email: '.$email'.\nтелефон: '.$tel.'\nАдрес сайта: '.$adres.'\nСфера сайта: '.$sfera.'\nСайт для определенных задач: '.$zadaci;

$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=windows-1251'."\n";
$headers .= 'Content-Transfer-Encoding: 8bit'."\n";
$headers .= 'From: *** Mail Delivery System <noreply@***.ru>';
$headers .= '.';

mail($to, $subject, $message, $headers);

echo"Ваше сообщение отправлено. Мы свяжемся с Вами в указанное Вами время.";}

Если Вы все сделали правильно, а получатель письмо не получает (помните, что временные издержки на доставку письма зависят от многих факторов и могут колебаться от нескольких минут до нескольких часов), убедитесь в том, что оно действительно отправилось. Это необходимо сделать в 2 этапа. Вначале попробуйте выполнить код:
PHP:
<?php 
if (mail("nobody@example.com", "the subject", "Example message",   
"From: webmaster@example.com \r\n")) { 
    echo "messege acepted for delivery"; 
} else { 
    echo "some error happen"; 
} 
?>
В случае если уже на этом шаге Вы получили ошибку, это может означать, что у Вас либо не запущен sendmail (или другой транспортный агент), либо он неправильно настроен, либо существуют ошибки в php.ini. К примеру, в последнее время распространено правило не принимать письма, в которых не указан правильный заголовок Mail-from.

В случае, если сообщение было принято к отправке, попробуйте посмотреть файл /var/log/mail или попросить об этом Вашего администратора, так как для этого требуются права суперюзера (root). Это можно сделать при помощи команды tail /var/log/mail. В случае успешной отправки письма в log-файле должны появится строки нижеприведенного типа либо сообщение об ошибке:
Oct 2 00:21:02 l72 sendmail[131]: h91LL1DG000131: to=root, ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30225, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (h91LL1g1000134 Message accepted for delivery)
Oct 2 00:21:18 l72 sendmail[137]: h91LL1g1000134: to=, ctladdr= (0/0), delay=00:00:17, xdelay=00:00:16, mailer=local, pri=30774, dsn=2.0.0, stat=Sent
 
в данном случае лучше лог выгрузи или смотри по логу ошибку в поисковике, обычно стандартные ошибки в не настроенности системы, или по падении в спам из за не существующих доменов не выходя за пределы почтового сервера.
 
Были косяки с функцией мейл() у некоторых хостингов. Например mail_ru . Этот же скрипт переносил на другой хостинг - все отсылалось. Техподдержка ничего путнего ответить не смогла. Видимо просто от них спам рассылался, вот и забанили ип адрес. Может быть у вас такая же проблема?
 
Нужно сделать тест для пользователей (текстовые поля и поля с выбором варианта из выпадающего списка), и чтоб результат приходил на нужный емеил.
Пробовал модулем order, но он как я понял для старой версии.
Посоветуйте что-то под DLE 9.4
 
Назад
Сверху