как сделать чтоб из формы данные уходили не в базу а отправлялись на мыло?

Тема в разделе "PHP", создана пользователем zagrenat, 7 окт 2008.

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

    zagrenat

    Регистр.:
    26 дек 2006
    Сообщения:
    215
    Симпатии:
    57
    помогите плиз сделать так чтоб письмо приходило на мыло ...
    в пхп нифига не понимаю. :nezn:

    сейчас все это в базу записываеться
    PHP:
    /**
     * Функция отправки письма с заявкой
     *
     */
    function send_request(){
    global 
    $comm_obj$config$page;
    $error "";
    $name trim($_POST['sr_name']);
    $phone trim($_POST['sr_phone']);
    $email trim($_POST['sr_email']);
    $mess trim($_POST['sr_text']);
    $cont_email $comm_obj['contact_email'];
    $obj_id $comm_obj['co_id'];

    if (
    $name==""$error.="&bull; Вы не указали свое имя<br>";
    if (!
    check_email($email)) $error.="&bull; Адрес электронной почты не указан или указан неверно<br>";
    if (
    $mess==""$error.="&bull; Вы не ввели текст заявки<br>";
    if(!isset(
    $_SESSION['captcha_keystring']) || $_SESSION['captcha_keystring'] != $_POST['keystring']) $error.="&bull; Неверно указан проверочный код<br>";
    if (
    $error==""){

        
    $subject "Заявка по коммерческой недвижимости на объект №$obj_id";
        
    $message "Имя: $name\n";
        
    $message .= "Email: $email\n";
        if (
    $phone!=""$message .= "Телефон: $phone\r\n\r\n";
        
    $message .= "Категория: Коммерческая недвижимость\n";
        
    $message .= "Номер объекта: $obj_id\n";
        
    $message .= "----------------------------------\r\n\r\n";
         if (
    $comm_obj['co_name']!=""$message .= "Название объекта: ".$comm_obj['co_name']."\r\n\r\n";
        
    $message .= "$mess\n\n";
        
    $message .= "----------------------------------\r\n\r\n";
        
    $message .= "Подробная информация по объекту: ".$config['baseurl']."commercial.php?mod=details&id=$obj_id\r\n";

        
    $headers "From: $name <$email>\n";
        
    $headers .= "Reply-To: $email\n";
        
    $headers .= "X-Mailer: OCAN Systems mailer\n";
        
    $headers .= "Content-Type: text/plain; charset=windows-1251";

        if (!
    mail($cont_email$subject$message$headers))
        
    $error .= "&bull; Ошибка при отправке письма. Попробуйте еще раз.<br>";
    }
    else {
        
    $page->assign('sr_name'$name);
        
    $page->assign('sr_phone'$phone);
        
    $page->assign('sr_email'$email);
        
    $page->assign('sr_text'$mess);
    }
    return 
    $error;
    }
     
  2. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    Ну они, судя по
    PHP:
    if (!mail($cont_email$subject$message$headers)) 
    и уходят (если нет ошибки)
     
  3. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Поидее должно уходить, тока вот надо бы чтоб функция че-нидь вернула в случае удачи...
     
  4. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Nafania, прав. Единственное почему может письмо не приходить на почту потому что его тормозят спам фильтры.
    Вот более менее универсальная мультиязычная функция для посылки писем, которая 100% работает и проверена ни на одном проекте!
    PHP:
    //$obj - обыкновенный массив со всей инфой
    function SendEmail(&$obj)
    {
        
    $strCharSet 'iso-8859-1';
        if (
    $obj['lang'] == "RU"$strCharSet 'windows-1251';

        
    $strTo '"'.$obj['to_name'].'" <'.$obj['to'].'>';
        
    $headers "From: \"{$obj['from_name']}\" <{$obj['from']}>";
        if (isset(
    $obj['date'])) $headers.= "\nDate: ".$obj['date'];
        
    $headers.= "\nMIME-Version: 1.0";
        
    $headers.= "\nContent-type: text/plain; charset=$strCharSet";
        
    $headers.= "\nX-Priority: 3 (Normal)";
        
    $headers.= "\nX-Mailer: {$obj['mailer']}";

        if (!
    mail($strTo$obj['subj'], $obj['msg'], $headers)) {
            
    Sleep(15);
            if (!
    mail($strTo$obj['subj'], $obj['msg'], $headers)) {
                return 
    FALSE;
            }
        }
        return 
    TRUE;
    }
     
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Достаточно добавить отправителя в белый список в фильтре мыла и не нужно такой сложной функции.
     
  6. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    У тебя на сайте форма, которая, например, отправляет, человеку подтверждение о его заказе,т.е, например, я зашел заказал машину стиральную у тебя, и мне должно придти подтверждение о моем заказе+плюс инфа.
    А теперь скажи на многих ли ты сайтах видел предложение добавить email адрес сайта в "белый лист"? Я пока нигде не видел!
    ИМХО, бред!
     
  7. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    уходим в оффтоп, но полазь по инету. очень, очень много мест где просят ручками добаить сайт в белый список. я видел десятки мест. Потому что сервисы предоставляющие мыло иногда считают эти сайты рассылающими спам. Более того, даже предлагают сменить сервис.

    Уважающий себя сайт при регистрации даже в письме попросит.

    Вам пример? гляньте тут в левой колонке (в самом низу колонки) про маил.ру. А потом уйдите по ссылке в топик.

    зы: чтобы вы долго не искали даю вам прямой линк http://www.nulled.ws/showthread.php?t=56796
     
  8. Sect0R

    Sect0R Читатель

    Заблокирован
    Регистр.:
    4 апр 2007
    Сообщения:
    136
    Симпатии:
    43
    2 uNknownMark

    Только ты забыл указать какие значения твое $obj , какой Mailer и т.д.
     
  9. sulacco

    sulacco Постоялец

    Регистр.:
    17 мар 2008
    Сообщения:
    90
    Симпатии:
    45
    Сталкивался с этой проблемой - письма отправленые с сайте не доходили до адресата, а те которые доходили доходили с задержкой в несколько десятков минут.

    Сработал только один вариант использование class.phpmailer.php
    почитать тут:

    http://php.russofile.ru/ru/translate/mail/phpmailer
    http://www.php-mail.ru/?id=4
     
    zagrenat нравится это.
  10. Sect0R

    Sect0R Читатель

    Заблокирован
    Регистр.:
    4 апр 2007
    Сообщения:
    136
    Симпатии:
    43
    Иногда бывают не верно прописаны DNS , и получится что всё работает, php пишет что письма отправлены, но они не доходят на некоторые системы (mail.ru напр.), но на gmail.com приходят.
     
Статус темы:
Закрыта.