Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отправка писем с сайта (php)  (Прочитано 16494 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Tatyana
Участник

ru
Offline Offline
Пол: Женский

« : 14-05-2009 04:33 » 

Подскажите пожалуйста! Делаю отправку писем с сайта. Пользователь заполняет форму, нажимает кнопку "отправить" и письмо отправляется на e-mail.
Вот код:

Цитата
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {color: #FF0000}
-->
</style>
</head>
<body>
<a href="main.html">на главную</a>
<p align="center"><b>Заполните данную форму и наш менеджер свяжется с вами в ближайшее время</b></p>
<?php
function show_form()
{
?>
<form action="" method=post>
<div align="center">
<br />Тема письма (например: металлургния, нефтяное оборудование и т.д.)<br />
<input type="text" name="Title" size="50"/>
<br />Фамилия Имя Отчество * <br />
<input type="text" name="FIO" size="50"/>
<br />e-mail <br />
<input type="text" name="Mail" size="50" />
<br />Контактный телефон *<br />
<input type="text" name="Phone" size="50" />
<br *>Текст письма <br />
<textarea name="mess" rows="4" cols="47"></textarea>
<br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
<table width="416" border="0" align=center>
<tr>
<td><span class="style1">поля, отмеченные
  • - обязательные для заполнения</span></td>
</tr>
</table>
<?
}
function complete_mail() {
$_POST['Title'] = substr(htmlspecialchars(trim($_POST['Title'])), 0, 1000);
$_POST['FIO'] = substr(htmlspecialchars(trim($_POST['FIO'])), 0, 100);
$_POST['Mail'] = substr(htmlspecialchars(trim($_POST['Mail'])), 0, 50);
$_POST['Phone'] = substr(htmlspecialchars(trim($_POST['Phone'])), 0, 30);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);

// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['FIO']))
output_err(0);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// создаем наше сообщение
require 'class.phpmailer.php';
$mess = '
Имя отправителя:'.$_POST['FIO'].'
Контактный email:'.$_POST['Mail'].'
Контактный телефон:'.$_POST['Phone'].'
Сообщение:'.$_POST['mess'];
// $to - кому отправляем
$to = 'tatyasha88@yandex.ru';
// $from - от кого
$from='Tatyasha@74.ru';
mail($to, $_POST['Title'], $mess, "From:".$from);
echo 'Спасибо! Ваше письмо отправлено.';
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
</body>
</html>

Проблема: выдает сообщение, что письмо отправлено, но на ящик письмо не приходит.....
Подскажите, в чём ошибка?
Записан

Smile, though your heart is aching
Smile, even though it's breaking ©
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 14-05-2009 04:57 » 

а на сервере не заблокирована рассылка писем?

и вот еще http://ru.php.net/manual/ru/function.mail.php
Цитата
Замечание: If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.
Записан

Удачного всем кодинга! -=x[PooH]x=-
Tatyana
Участник

ru
Offline Offline
Пол: Женский

« Ответ #2 : 14-05-2009 05:03 » 

а на сервере не заблокирована рассылка писем?

А как узнать заблокирована или нет??? У меня установлен Denwer (это от него заваисит?)
Записан

Smile, though your heart is aching
Smile, even though it's breaking ©
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 14-05-2009 05:52 » 

Tatyana, смотри конфиг PHP - так можно указать адрес SMTP-сервера.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Tatyana
Участник

ru
Offline Offline
Пол: Женский

« Ответ #4 : 14-05-2009 05:58 » 

Мне сказали, что в денвере стоит заглушка которая не отправляет письма, а просто сохраняет их. Проверила, письма действительно сохраняются в папке Z//tmp/!sendmail.
Вопрос - как сделать, чтобы письма всё-таки приходили на e-mail??? Подскажите, очень нужно для диплома!!!
Записан

Smile, though your heart is aching
Smile, even though it's breaking ©
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-05-2009 06:48 » 

Сделай согласно этому: http://ru.php.net/manual/ru/mail.setup.php
Если будет все без изменений, значит у них эта фишка сделана сразу внутри php — тогда потребуется заменить php.
Скачать PHP  можно здесь: http://ru.php.net/downloads.php
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #6 : 14-05-2009 16:26 » 

Цитата
У меня установлен Denwer (это от него заваисит?)
Да! По-умолчанию (используется заглушка sendmail) он не отправляет письма!
Смотри http://localhost/Test/sendmail/index.php
А также собственно заглушка лежит <DISK>:\usr\local\sendmail\

UPD: письма сами по себе не отправляются... нужен sendmail... на обычных серверах он обычно стоит, а в денвере его работа просто эмулируется.

Ну или как писал RXL:
смотрим файл настроек PHP
Цитата
[mail function]
; Только для Win32 - используемый SMTP-сервер.
; Укажите здесь SMTP-сервер своего провайдера.
;SMTP = localhost

; Только для Win32 - поле From: по умолчанию.
;sendmail_from = denwer@localhost

; Только для UNIX - задает путь и аргументы программы sendmail (по
; умолчанию - 'sendmail -t -i').
sendmail_path = \usr\sbin\sendmail -t -i
; ВНИМАНИЕ: необходимо использовать обратные слэши: "\", а не прямые.
; Иначе sendmail не работает в Windows 95 ... Windows ME.
; ВНИМАНИЕ: если Вы хотите все же использовать SMTP-сервер,
; раскомментируйте директиву SMTP (см. выше), а эту - уберите.
; Если ее не убрать, все равно будет вызываться sendmail.

строку "sendmail_path" комментируем, строку ;SMTP = localhost раскомментируем и указываем почтовый сервер через который надо отправлять почту (сервер должен быть без авторизации на отправку, так что маил.ру не подходит)

--
ну или читай http://forum.dklab.ru/viewtopic.php?p=72627#72627

« Последнее редактирование: 14-05-2009 16:39 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #7 : 14-05-2009 19:14 » 

совет: оформляй код пхп от кода хтмл отдельно.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Chuda
Гость
« Ответ #8 : 16-05-2009 07:31 » new

McZim, прозвучало же волшебное слово: диплом.
А вот если после института пойдёт работать по профилю, а не менеджером по менеджменту менеджеров, то довольно скоро обожжётся на практике и начнёт учиться.
А пока это студент последнего курса…
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines