Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
1

Как отправить на e-mail сообщение о новом сообщении

07.08.2012, 09:36. Показов 1950. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, Мне нужна помощь, я новичок в php, и ещё многого не знаю, но изучаю. Перейду к делу:

У меня есть сайт, а на сайте на странице page.php у каждого пользователя свой профиль. Ну и получается так page.php?id=56. Ну так вот я зашёл на страницу другого юзера моего сайта, и нажал отправить сообщение, и у меня открылась форма в мутулс окошке и вот код формы отправки Сообщения

HTML5
1
2
3
4
5
6
7
8
9
10
<div style='text-align: left;'>
<form ACTION='post.php' METHOD='post'> 
<br>
Кому: <B>$myrow[login]</B> <br><br>
Тема:<br> <input name='tema' placeholder='Введите тему' VALUE='Без темы' MAXLENGTH='26'><br><br>
Сообщение:<br> <textarea name='text' placeholder='Не более 200 символов...' MAXLENGTH='200' required></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' value='Отправить'> <a href='#close2'> <input type='button' name='osx' value='Отменить' class='simplemodal-close'/></a>
</form></div>
После отправки, код обрабатывает post.php. Вот его код

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
session_start(); //запускаем сессию. Обязательно в начале страницы
include ("bd.php"); // соединяемся с базой, укажите свой путь, если у вас уже есть соединение
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
   //если логин или пароль не действителен
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
   }
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
 
if (isset($_POST['id'])) { $id = $_POST['id'];}//получаем идентификатор страницы получателя
if (isset($_POST['tema'])) { $tema = $_POST['tema'];}//получаем тему сообщения
if (isset($_POST['text'])) { $text = $_POST['text'];}//получаем текст сообщения
if (isset($_POST['poluchatel'])) { $poluchatel = $_POST['poluchatel'];}//логин получателя
$author = $_SESSION['login'];//логин автора
$date = date("Y-m-d");//дата добавления
 
if (empty($author) or empty($text) or empty($poluchatel) or empty($date) or empty($tema)) {//есть ли все необходимые данные? Если нет, то останавливаем
exit (" <meta http-equiv='Refresh' content='1; URL=page.php?id=".$id."#send'>  Вы ввели не всю информацию, вернитесь назад и заполните все поля");}
 
$text = stripslashes($text);//удаляем обратные слеши
$text = htmlspecialchars($text);//преобразование спецсимволов в их HTML эквиваленты
 
 
$result2 = mysql_query("INSERT INTO messages (author, poluchatel, date, text, tema) VALUES ('$author','$poluchatel','$date','$text','$tema')",$db);//заносим в базу сообщение
 
 
echo "<html><head> <meta http-equiv=Content-Type content=text/html; charset=windows-1251> <meta http-equiv='Refresh' content='0; URL=http://artgur.16mb.com/page.php?id=".$id."#success'></head><body> $myrow[text] $myrow[tema]Ожидаем сервер...</body></html>";//перенаправляем пользователя
?>
Так вот, я уже как не пытался, не получается сделать так, чтобы при отправке сообщения на странице юзера, в этом обработчике генерировалось письмо и отправлялось на ящик юзера. Были такие php коды. Которые я пробовал
PHP
1
{$emailTo = '$myrow[email]'; //Сюда введите Ваш email$body = "Новое личное сообщение: От $author \n\ntema: $tema";$headers = 'У вас одно новое сообщение <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;mail($emailTo, $tema, $body, $headers);$emailSent = true;
И вот такой код
PHP
1
$message = "Здравствуйте, Пользователь ".$login." отправил вам личное сообщение! С темой ".$tema.". Для того чтобы прочитать сообщения, вам необходима войти на сайт и перейти в раздел сообщения (http://artgur.16mb.com/messages.php) /n С уважением Администрация ;//текст сообщенияmail($email, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n");//отправляем сообщение
Пожалуйста помогите, и объясните если можете как и что.

Добавлено через 13 часов 12 минут
Помогите...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2012, 09:36
Ответы с готовыми решениями:

Как сделать оповещение о новом сообщении.
Здравствуйте подскажите пожалуйста как можно реализовать оповещение о новом сообщение сделал...

Как отправить сообщение на E-mail
Как отправить сообщение на E-mail? Пробовал старым способомDim smtpclient As New SmtpClient ...

Как в приложении Iphone отправить сообщение на е-mail?
как в приложении Iphone отправить сообщение на е-mail и записать контакты, программа нужна помогите

Как отправить сообщение в Mail Ru Агенте задним числом?
Здравствуйте. Хотел бы узнать как отправить сообщение в Mail Ru Агенте задним числом. Сегодня 8ое...

18
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 09:45 2
Цитата Сообщение от art_gur46 Посмотреть сообщение
PHP
1
{$emailTo = '$myrow[email]';
переменные в апострофах не работают как переменные, а отображаются в виде текста - либо уберите их вообще, либо поменяйте на кавычки

Добавлено через 7 минут
грамматику проверьте.. а то придет такое "грамотное сообщение", юзер поржет и больше не будет заходить..
Цитата Сообщение от art_gur46 Посмотреть сообщение
$message = "Здравствуйте, пользователь ".$login." оставил Вам новое личное сообщение! \n Тема сообщения: ".$tema.". \nДля того чтобы прочитать сообщение, Вам необходимо войти на сайт и перейти в раздел сообщений (http://artgur.16mb.com/messages.php) \n С уважением, Администрация сайта";//текст сообщения
PHP
1
2
$emailTo = $myrow['email'];
mail($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n");//отправляем сообщение
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 10:15  [ТС] 3
Цитата Сообщение от KOPOJI Посмотреть сообщение
переменные в апострофах не работают как переменные, а отображаются в виде текста - либо уберите их вообще, либо поменяйте на кавычки

Добавлено через 7 минут
грамматику проверьте.. а то придет такое "грамотное сообщение", юзер поржет и больше не будет заходить..
Да, знаю я про эти ошибочки)) Просто вчера в темноте с ноута работал, свет вырубили)

Добавлено через 27 минут
Цитата Сообщение от KOPOJI Посмотреть сообщение
{$emailTo = '$myrow[email]';
То есть надо сделать вот так
PHP
1
{$emailTo = $myrow[email];
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 10:19 4
апострофы только поставь. я выше написал как надо - а как ты написал ошибка уровня E_NOTICE сформируется
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 10:21  [ТС] 5
Цитата Сообщение от KOPOJI Посмотреть сообщение
апострофы только поставь. я выше написал как надо - а как ты написал ошибка уровня E_NOTICE сформируется
Ты уж извини, но я не знаю что такое апострафы)

Ты про этот код говоришь
PHP
1
{$emailTo = '$myrow[email]';
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 10:27 6
' - вот это апостроф)) одинарная кавычка)
я про этот код говорю:
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
1
$emailTo = $myrow['email'];
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 10:29  [ТС] 7
Цитата Сообщение от KOPOJI Посмотреть сообщение
' - вот это апостроф)) одинарная кавычка)
я про этот код говорю:
Спасибо, сейчас попробую
0
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:01  [ТС] 8
Цитата Сообщение от KOPOJI Посмотреть сообщение
' - вот это апостроф)) одинарная кавычка)
я про этот код говорю:
У меня получилось теперь так

Форма
HTML5
1
2
3
4
5
6
7
8
9
10
11
<div style='text-align: left;'>
<form ACTION=post.php METHOD=get> 
<br>
Кому: <B>$myrow[login]</B> <br><br>
Тема:<br> <input name='tema' placeholder='Введите тему' VALUE='Без темы' MAXLENGTH='26'><br><br>
Сообщение:<br> <textarea name='text' placeholder='Не более 200 символов...' MAXLENGTH='200' required></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='hidden' name='email' value='$myrow[email]'>
<input type='submit' value='Отправить'> <a href='#close2'> <input type='button' name='osx' value='Отменить' class='simplemodal-close'/></a>
</form></div>
Post.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
session_start(); //запускаем сессию. Обязательно в начале страницы
include ("bd.php"); // соединяемся с базой, укажите свой путь, если у вас уже есть соединение
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
   //если логин или пароль не действителен
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
   }
}
else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
 
if (isset($_GET['id'])) { $id = $_GET['id'];}//получаем идентификатор страницы получателя
if (isset($_GET['tema'])) { $tema = $_GET['tema'];}//получаем тему сообщения
if (isset($_GET['text'])) { $text = $_GET['text'];}//получаем текст сообщения
if (isset($_GET['email'])) { $email = $_GET['email'];}//получаем email получателя сообщения
if (isset($_GET['poluchatel'])) { $poluchatel = $_GET['poluchatel'];}//логин получателя
$author = $_SESSION['login'];//логин автора
$date = date("Y-m-d");//дата добавления
 
if (empty($author) or empty($text) or empty($poluchatel) or empty($date) or empty($tema) or empty($email)) {//есть ли все необходимые данные? Если нет, то останавливаем
exit (" <meta http-equiv='Refresh' content='1; URL=page.php?id=".$id."#send'>  Вы ввели не всю информацию, вернитесь назад и заполните все поля");}
 
$text = stripslashes($text);//удаляем обратные слеши
$text = htmlspecialchars($text);//преобразование спецсимволов в их HTML эквиваленты
 
 
$result2 = mysql_query("INSERT INTO messages (author, poluchatel, date, text, tema, email) VALUES ('$author','$poluchatel','$date','$text','$tema','$email')",$db);//заносим в базу сообщение
 
$emailTo = $myrow['email'];
$message = "Здравствуйте, пользователь ".$login." оставил Вам новое личное сообщение! \n Тема сообщения: ".$tema.". \nДля того чтобы прочитать сообщение, Вам необходимо войти на сайт и перейти в раздел сообщений (http://artgur.16mb.com/messages.php) \n С уважением, Администрация сайта";//текст сообщения
mail($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n");//отправляем сообщение
 
echo "<html><head> <meta http-equiv=Content-Type content=text/html; charset=windows-1251> <meta http-equiv='Refresh' content='0; URL=http://artgur.16mb.com/page.php?id=".$id."#success'></head><body> $myrow[text] $myrow[tema]Ожидаем сервер...</body></html>";//перенаправляем пользователя
?>
И я ещё на всякий пожарный,чтобы проверить получает ли post.php email создал email но он его получает и заносит в базу, а письмо не приходит
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 11:06 9
Цитата Сообщение от art_gur46 Посмотреть сообщение
PHP
1
mail($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n");//отправляем сообщение
замени на
PHP
1
2
echo ($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n");
if(!mail($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n")) die("<br />Не могу отправить сообщение!");//отправляем сообщение//отправляем сообщение
Добавлено через 1 минуту
и посмотри сначала первую строчку что выводит? и если будет только одна строка, но не будет второй ("Не могу отправить сообщение!") - значит все должно быть нормально
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:08  [ТС] 10
Цитата Сообщение от KOPOJI Посмотреть сообщение
замени на
PHP
1
2
echo ($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n");
if(!mail($emailTo, "Новое личное сообщение", $message, "Content-type:text/plain; Charset=windows-1251\r\n")) die("<br />Не могу отправить сообщение!");//отправляем сообщение//отправляем сообщение
Добавлено через 1 минуту
и посмотри сначала первую строчку что выводит? и если будет только одна строка, но не будет второй ("Не могу отправить сообщение!") - значит все должно быть нормально
Вот что выводит

PHP
1
Parse error: syntax error, unexpected ',' in /home/u268427380/public_html/post.php on line 41
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 11:11 11
ы.
PHP
1
echo "Email: <b>".$emailTo."</b> Новое личное сообщение <b>".$message."</b> Content-type:text/plain; Charset=windows-1251\r\n";
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:15  [ТС] 12
Цитата Сообщение от KOPOJI Посмотреть сообщение
ы.
PHP
1
echo "Email: <b>".$emailTo."</b> Новое личное сообщение <b>".$message."</b> Content-type:text/plain; Charset=windows-1251\r\n";
Теперь вот что

PHP
1
Email: Новое личное сообщение Здравствуйте, пользователь art-gur оставил Вам новое личное сообщение! Тема сообщения: Без темы. Для того чтобы прочитать сообщение, Вам необходимо войти на сайт и перейти в раздел сообщений (http://artgur.16mb.com/messages.php) С уважением, Администрация сайта Content-type:text/plain; Charset=windows-1251 Ожидаем сервер...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 11:17 13
ну вот. у вас переменная с адресом мыла пустая. проверьте вашу запись $row['email'] - т.е. поле email в БД
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:20  [ТС] 14
Цитата Сообщение от KOPOJI Посмотреть сообщение
ну вот. у вас переменная с адресом мыла пустая. проверьте вашу запись $row['email'] - т.е. поле email в БД
Там в базе e-mail заносится.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 11:21 15
ага, заносится. но покажите мне, пожалуйста, где вы его извлекаете из базы перед отправкой?
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:23  [ТС] 16
Цитата Сообщение от KOPOJI Посмотреть сообщение
ага, заносится. но покажите мне, пожалуйста, где вы его извлекаете из базы перед отправкой?
Нигде) А как это сделать скажите пожалуйста
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
07.08.2012, 11:33 17
Цитата Сообщение от art_gur46 Посмотреть сообщение
PHP
1
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
если из этой строки таблицы нужно взять - то замени на вот такое
PHP
1
$result2 = mysql_query("SELECT `id`,`email` FROM users WHERE `login`='$login' AND `password`='$password' AND `activation`='1'",$db);
1
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:33  [ТС] 18
Цитата Сообщение от KOPOJI Посмотреть сообщение
если из этой строки таблицы нужно взять - то замени на вот такое
PHP
1
$result2 = mysql_query("SELECT `id`,`email` FROM users WHERE `login`='$login' AND `password`='$password' AND `activation`='1'",$db);
Спасибо сейчас проверю.
0
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 11
07.08.2012, 11:35  [ТС] 19
Цитата Сообщение от KOPOJI Посмотреть сообщение
если из этой строки таблицы нужно взять - то замени на вот такое
PHP
1
$result2 = mysql_query("SELECT `id`,`email` FROM users WHERE `login`='$login' AND `password`='$password' AND `activation`='1'",$db);
Неа, всё равно не идёт сообщение.
0
07.08.2012, 11:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2012, 11:35
Помогаю со студенческими работами здесь

Как приложение Вконтакте узнаёт о новом сообщении?
Как реализовать подобную вещь: как, например, приложение Вконтакте узнаёт о новом сообщение? Оно...

Социальные сети: как на MVC 3 можно организовать быстрое уведмомление о новом сообщении
Мне в голову пришло несколько вариантов: 1) организовать запросы со страницы пользователя на...

Как отправить простое письмо на E-Mail (mail.ru)
Привет, скажите как отправить письмо на определенный email ? Пользователь который отправляет...

не получается отправить сообщение на e-mail
имеется операционная система windows 7. Нужно отправить сообщение пользователю с подтверждением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru