Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почта, объясните пожалуйста.
 
 автор: PSB   (11.04.2009 в 10:01)   письмо автору
 
 

Приветствую.
Вот смотрите, сделал дома хостинг для своего сайта, настрил Apache+MySQL+PHP, установил почтовый сервер (CourierMailServer). Зарегил домен, ip все связал, порты почтовые тоже, всё работает. В почтовом сервере есть пользователь admin@site.ru, почтовый сервер отпровляет и получает письма из Интернета и обратно, всё нормально. На сайте есть форма которая отправляет этому пользователю admin@site.ru почтовые сообщения, скрипт такой.


$text = $atext
$address = 'admin@site.ru';
$subject = "Письмо с сайта";
$message = "Сообщение - ".$text."";
mail($address,$subject,$message,"Content-type:text/plain; Charset=Windows-1251\r\n")


Проблем нет всё работает, письма приходят.
И вот столкнулся с проблемой, нужно, что бы письма пересылались от admin@site.ru пользователю который в форме указывает свой email. Т.е код типа такой


// проверка ввода email
if (isset($_POST['email'])) {
 .......
  }
 //Далее если всё с email нормально то нужно отправить письмо по указанному адресу. И тут у меня загвоздка т.е. вот такая
$text = $atext
$address = $email;
$subject = "Письмо с сайта";
$message = "Сообщение - ".$text."";
mail($address,$subject,$message,"Content-type:text/plain; Charset=Windows-1251\r\n");



Вот как сделать, чтоб письмо отправлялось от admin@site.ru человеку адрес которого $email
Где настраивать в почтовом сервере или код должен быть другой, или в apache?
Понимаю, что разгадка рядом но что то не докумекать, подскажите направление.

  Ответить  
 
 автор: Commander   (11.04.2009 в 10:10)   письмо автору
 
   для: PSB   (11.04.2009 в 10:01)
 

Используйте следующий код:

$text = $atext 
$address = $email; 
$subject = "Письмо с сайта"; 
$message = "Сообщение - ".$text.""; 
$headers = "Content-type:text/plain; Charset=Windows-1251\r\nFrom:admin@".$_SERVER['SERVER_NAME'];
mail($address,$subject,$message,$headers); 

  Ответить  
 
 автор: PSB   (11.04.2009 в 11:03)   письмо автору
 
   для: Commander   (11.04.2009 в 10:10)
 

Что то не отправляется. Я наверно плохо изложил проблемму, в вашем коде просто добавляется имя от кого письмо, правильно? А мне то нужно, что бы скрипт, какбы это объснить ))) ну типа дал задание почтовому серверу отправить от admin@site.ru письмо на адрес, $email с текстом $text. Что то мне подсказывает, что наверно нужно как то почтовый сервер настраивать, или всётаки нет.

  Ответить  
 
 автор: sim5   (11.04.2009 в 10:10)   письмо автору
 
   для: PSB   (11.04.2009 в 10:01)
 

Что значит "письмо отправлялось от admin@site.ru"? Был указан этот адрес отправителя?
Существуем масса заголовков, кторые отправляются в почтовом отправлении, из них, нужные вам, это From и Reply-To.

  Ответить  
 
 автор: PSB   (11.04.2009 в 10:32)   письмо автору
 
   для: sim5   (11.04.2009 в 10:10)
 

>Что значит "письмо отправлялось от admin@site.ru"? Был указан этот адрес отправителя?
>Существуем масса заголовков, кторые отправляются в почтовом отправлении, из них, нужные вам, это From и Reply-To.

да мне главное, что бы пользователь получил письмо с текстом а от кого оно это вопрос второй, щас попробую код от Commander

  Ответить  
 
 автор: sim5   (11.04.2009 в 11:02)   письмо автору
 
   для: PSB   (11.04.2009 в 10:32)
 

Код Commander ни чем не отличается от вашего. Если вообще письма не отправляются, значит не работает сервер почтовый.

PS. Таким образом отправлять тему письма на русском языке, как делаете вы и Commander, нельзя.

  Ответить  
 
 автор: PSB   (11.04.2009 в 11:08)   письмо автору
 
   для: sim5   (11.04.2009 в 11:02)
 

Ну да, почтовый сервер как бы не пересылает письма через admin@site.ru. по указанному $email

Получается, почтовый сервер работает, но только может пролучить письмо которе будет адресованно admin@site.ru т.е. пользователю который забит в настройках почтового сервера этот код работает, и письма с сайта нормально складываются в папку входящие.

$address = 'admin@site.ru'; 
$subject = "Письмо с сайта"; 
$message = "Сообщение - ".$text.""; 
mail($address,$subject,$message,"Content-type:text/plain; Charset=Windows-1251\r\n")


И потом я могу с любого компьютера получить это письмо.

  Ответить  
 
 автор: sim5   (11.04.2009 в 11:17)   письмо автору
 
   для: PSB   (11.04.2009 в 11:08)
 

Смотрите настройки своего почтового сервера, и повторяю: $subject = "Письмо с сайта"; - так не пойдет. Нужно кодировать, иначе респондент будет получать абракадабру.

  Ответить  
 
 автор: PSB   (11.04.2009 в 11:19)   письмо автору
 
   для: sim5   (11.04.2009 в 11:17)
 

Да вроде понял, на почтовом сервере нужно настраивать пересылку.

>Смотрите настройки своего почтового сервера, и повторяю: $subject = "Письмо с сайта"; - так не пойдет. Нужно кодировать, иначе респондент будет получать абракадабру.

Подскажите пожалуйста как кодировать.

  Ответить  
 
 автор: sim5   (11.04.2009 в 11:24)   письмо автору
 
   для: PSB   (11.04.2009 в 11:19)
 

Например, так:
$sender = "=?windows-1251?B?" . base64_encode($name) . "?= <" .$reply. ">" - это для дреса и имени отправителя.
$subject = "=?windows-1251?B?" . base64_encode($subject) . "?="; - это для темы письма.

  Ответить  
 
 автор: PSB   (11.04.2009 в 11:34)   письмо автору
 
   для: sim5   (11.04.2009 в 11:24)
 

Спасибо, буду пробовать.

И ещё раз спрошу по поводу почтового сервера, точно проблемма в пересылке? Там ведь не один пользователь admin@site.ru, какой долджен быть тогда код, что бы почтовый сервер обрабатывал запрос и отправлял письма, именно от admin@site.ru. Ведь получается в настройках apache если стоит

ServerAdmin admin@site.ru

То и письма должны приходить к нему и от него.

Блин кто бы подкинул мозгов )))))

Так, стоп ну а если я с таким вот кодом перееду на какой нибудь хостинг, и там захочу сделать к примеру систему восстановления пароля. Т.е пользователь будет вводить свой адрес и должен будет получить письмо с сайта. Как тогда получается это работает. Ведь таких систем полно и регистрации и восстановление паролей.

  Ответить  
 
 автор: sim5   (11.04.2009 в 11:48)   письмо автору
 
   для: PSB   (11.04.2009 в 11:34)
 

Каким кодом? Хост вам предоставит работу с почтой. Не ваша забота, сколько, от кого и как. К вам будет только ограничения на количество отправляемой почты и ее объема за единицу времени. Если вы о своем тестовом сервере, то разбирайтесь не с Апач, а с почтовым сервером и настройками в РНР. А еще лучше установите для теста Денвер, который будет просто складывать почтовые отправления во временную папку, никуда их не отправляя - от это пользы больше, так как ошибок при отправке ее вы допускаете не меряно. А уж если уверены, что сформировали почтовое отправление верно, то проверить его на другом сервисе не столь сложно - отпрввите его в Outlook, вот и все.

  Ответить  
 
 автор: PSB   (11.04.2009 в 12:02)   письмо автору
 
   для: sim5   (11.04.2009 в 11:48)
 

Блин да в том то и дело, у меня один комп типа сервер на котором всё работает, почта сайт и т.д. А на другом Денвер, на нём я всё и тестирую прежде чем выложить на этот сервер и почтовая заглушка работает тоже. На сервере сейчас если пользователь хочет мне написать сообщение, то в форму забивает текст и нажимает отправить, я получаю письмо.
по этому коду

$address = 'admin@site.ru'; 
$subject = "Письмо с сайта"; 
$message = "Сообщение - ".$text.""; 
mail($address,$subject,$message,"Content-type:text/plain; Charset=Windows-1251\r\n")


А теперь возник вопрос, что нужно пользователю получить из базы определённый текст. и он должен ввести свой адрес электронной почты, и нажать на кнопочку получить. А скрипт должен этот текст ему отправить. Вот сейчас у меня всё получается кроме отправки, уже психоз начинается ))))

  Ответить  
 
 автор: sim5   (11.04.2009 в 12:05)   письмо автору
 
   для: PSB   (11.04.2009 в 12:02)
 

Денвер ничего и никуда и не отпарвляет. А чтобы отправить почту получателю, то указывается его адрес, все.

  Ответить  
 
 автор: PSB   (11.04.2009 в 12:14)   письмо автору
 
   для: sim5   (11.04.2009 в 12:05)
 

>Денвер ничего и никуда и не отпарвляет. А чтобы отправить почту получателю, то указывается его адрес, все.

Денвер то понятно, что ничего не отправляет. И мой почтовый сервер, гад, тоже, не хочет отправлять ничего никому. Хотя и работает как почтовый сервер, если вы напишете мне письмо то я его получу и если напишу вам то тоже вы его получите. А вот если вы в форме напишете свой адрес $email то ничего не получите ))))
не работает вот так вот.
$address = $email; // НО ЕСЛИ $email ЗАМЕНИТЬ НА admin@site.ru то почтовый сервер положит ссобщение в папку входящие. Т,Е пользователь admin@site.ru в почтовом сервере есть и он его обробатывает. 
$subject = "Письмо с сайта"; 
$message = "Сообщение - ".$text.""; 
mail($address,$subject,$message,"Content-type:text/plain; Charset=Windows-1251\r\n");

  Ответить  
 
 автор: sim5   (11.04.2009 в 12:16)   письмо автору
 
   для: PSB   (11.04.2009 в 12:14)
 

Разбивайте то, что выставляете на страницу, иначе никто читать не будет.
Что вы этот код пстоянно выставляете, он уже надоел, проблема не в нем - смотрите настройки своего сервера.

  Ответить  
 
 автор: PSB   (11.04.2009 в 12:25)   письмо автору
 
   для: sim5   (11.04.2009 в 12:16)
 

Ладно, т.е. получается, что пусть аброкадабру пусть не очень правильно но этот мой код при правильной настройке сервера, должен отправить письмо ?

  Ответить  
 
 автор: sim5   (11.04.2009 в 12:29)   письмо автору
 
   для: PSB   (11.04.2009 в 12:25)
 

Да. Только вот абракадабру, почтовые сервисы могут и не принять, посчитав ее за спам или вообще за вирус.

  Ответить  
 
 автор: PSB   (11.04.2009 в 12:36)   письмо автору
 
   для: sim5   (11.04.2009 в 12:29)
 

Спасибо sim5, Спасибо за то, что не написал "Ну какой вы тупой! -Та же самая мебель и ключ подошёл!!!" ))))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования