Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98

Отправка содержимого формы по E-Mail

21.07.2015, 19:47. Показов 4097. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация следующая. С PHP никогда раньше не работал, и глубоко вникать в него на данный момент времени смысла для себя не вижу, поэтому нужна помощь.

Домен для сайта пока не куплен, но покупать буду у нормального хостинга с поддержкой PHP и всего необходимого.
Перед тем как покупать домен хочется подготовить все важные функции, чтобы потом просто загрузить все на домен и запустить в работу.

В данный момент наткнулся на проблему отправки введенного пользователем содержимого формы на указанный E-Mail.

1) Форма встроена в страницу сайта, не должен открываться почтовый сервис (как делается при использовании mailto: ) соответственно выглядит она так:

HTML5
1
2
3
4
5
6
7
8
9
10
11
 <form id="form" >
                        <p class="main_color" >Введите ваши ФИО</p>
                        <input type="text" class="main_color">
                        <p class="main_color">Введите свой телефон</p>
                        <input type="text" class="main_color">
                        <p class="main_color">Введите ваш E-mail</p>
                        <input type="text" class="main_color">
                        <p class="main_color">Введите ваш Адрес</p>      
                        <input type="text" class="main_color">
                        <input type="submit" value="Отправить" class="main_color"> 
          </form>
Нужно чтобы при нажатии на кнопку "Отправить" ко мне приходило письмо в формате

--------
Имя клиента: ***
Номер телефона клиента: ***
E-Mail клиента: ***
Адрес клиента: ***
--------

Что я должен для этого сделать?

Заранее буду благодарен вам за ответ!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2015, 19:47
Ответы с готовыми решениями:

Отправка содержимого CANVAS на E-Mail
Добрый вечер! Срочно нужно решить проблему: есть рисовалка на CANVAS и кнопка отправки. Нужно изображение из CANVAS отправить на...

Отправка формы на e-mail
Доброго здравия, вопрос к знающим и умеющим. Ребят есть форма определенная к примеру поля 1 поле 2 и поле 3 соответственно, снизу кнопка...

Отправка формы на E-mail
Нуждаюсь помощи! Создал форму на главной странице сайта. После нажатие на кнопку содержимое формы отправляется на почту, однако...

15
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
21.07.2015, 21:39
блин, ну ведь таких тем уже мильён. Даже по названию когда Вы создавали тему ну предлагались же топики... навскидку Скрипт отправки данных на email
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
21.07.2015, 21:43  [ТС]
А можете пожалуйста объяснить (или дать ссылки на то где найти объяснение) как связывать между собой html файл страницы на которой расположена форма и php файл со скриптом при их установке на домен?

Заранее спасибо!
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
21.07.2015, 21:58
html файлик такой
HTML5
1
2
3
4
5
6
7
8
9
10
<form action="otpravka_na_php.php" method=post> 
<p>Вводный текст перед формой <p> 
<div align="center"> 
Teма<br /> 
<input type="text" name="title" size="40"><br /> 
Сообщение<br /> 
<textarea name="mess" rows="10" cols="40"></textarea> 
<br /> 
<input type="submit" value="Отправить" name="submit"></div> 
</form>
файл otpravka_na_php.php такой
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
// если была нажата кнопка "Отправить" 
if($_POST['submit']) {
        $title = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000); 
        $mess =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000); 
        // $to - кому отправляем 
        $to = 'test@test.ru'; 
        // $from - от кого 
        $from='test@test.ru'; 
        // функция, которая отправляет наше письмо
        mail($to, $title, $mess, 'From:'.$from); 
        echo 'Спасибо! Ваше письмо отправлено.'; 
} 
?>
кладете рядом. обращаетесь к html-файлу
все

Добавлено через 1 минуту
тык первое попавшееся в гугле
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
21.07.2015, 21:59  [ТС]
Спасибо большое за помощь!

Тыкал в гугле, но так и не мог понять как расположить файлы и соединить их, теперь все предельно ясно!
0
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288
21.07.2015, 22:07
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
45
46
47
48
49
50
<?php
    if(isset($_POST['send']))
    {
        if(empty($_POST['fio'])) echo 'Вы не ввели Ф.И.О';
        if(empty($_POST['phone'])) echo 'Вы не указали телефон';
        if(empty($_POST['email'])) echo 'Вы не указали email';
        if(empty($_POST['address'])) echo 'Вы не указали адрес';
        else{
            $fio = mysql_real_escape_string($_POST['fio']);
            $phone = mysql_real_escape_string($_POST['phone']);
            $email = mysql_real_escape_string($_POST['email']);
            $address = mysql_real_escape_string($_POST['address']);
                if(!preg_match('/^[-0-9a-z_.]+@[-0-9a-z^.]+.[a-z]{2,4}$/i',$email)){
                    exit ('Вы не коректно указали емайл');
                }else{
                    $to = 'email@mail.ru';//Ваш емайл    
                    $subject = 'Сообщение с сайта www.site.ru'; 
                    $subject = '=?utf-8?b?'. base64_encode($subject) .'?='; 
                    $headers = "Content-type: text/plain; charset=\"utf-8\"\r\n"; 
                    $headers .= "From: <". $from .">\r\n"; 
                    $headers .= "MIME-Version: 1.0\r\n"; 
                    $headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n"; 
                    $message = "Посетитель назвался: $fio \r\n Указал свой адрес: $email \r\n Указал телефон:$phone \r\n Указал свой адрес: $address";
                    $utf = "Content-type:text/plain; charset = utf-8 \r\n From:test@test.ru";
                    if(mail($to, $subject, $message, $headers))
                    {
                        echo "<p>Сообщение отправленно успешно,Спасибо</p>";
                    }else{
                        echo "<p>Сообщение не удалось отправить,повторите попытку позже</p>";
                    }
                }
            }           
    }
?>
 
<form id="form" >
    <p class="main_color" >Введите ваши ФИО</p>
    <input type="text" class="main_color" name="fio">
    
    <p class="main_color">Введите свой телефон</p>
    <input type="text" class="main_color" name="phone">
    
    <p class="main_color">Введите ваш E-mail</p>
    <input type="text" class="main_color" name=">
    
    <p class="main_color">Введите ваш Адрес</p>      
    <input type="text" class="main_color" name="address">
    
    <input type="submit" value="Отправить" name="send" class="main_color"> 
</form>
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
22.07.2015, 23:04  [ТС]
Здравствуйте еще раз! Переписал код под свой сайт, при попытке "Оставить Заявку" открывается пустой экран домен/send_mail.php и ничего не происходит

Подскажите пожалуйста что я сделал не так

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 <form id="form" action="send_mail.php" method="post" class="borders main_color" >
                        <label for="form_1">Для начала введите ваше имя<sup>*</sup></label> <br>
                        <input id="form_1" name="form_1" size="40" type="text" class="main_color input" placeholder="Чтобы мы знали как к вам обращаться" > <br>
                        <label for="form_2">Ваш номер телефона<sup>*</sup></label> <br>
                        <input id="form_2" name="form_2" size="20" type="text" class="main_color input" placeholder="Мы позвоним вам" > <br>
                        <label for="form_3">E-mail для обратной связи<sup>*</sup></label> <br>
                        <input id="form_3" name="form_3" size="40" type="text" class="main_color input" placeholder="На всякий случай" > <br>
                        <label for="form_5">Сообщите ваш адрес<sup>*</sup></label>
                        <textarea id="form_5"  name="form_5" size="500"class="main_color input borders text_area" placeholder="Чтобы мы знали как до вас добраться"></textarea>
                         <label for="form_4">Приблизительный вес<sup>*</sup>:</label>  
                        <input id="form_4" name="form_5" size="6" type="text" class="main_color input input_weight" placeholder="кг">
                        <br>
                        <label for="form_6">И любую дополнительную информацию</label>
                        <textarea id="form_6" name="form_6" size="2000" class="main_color input borders text_area" placeholder="Например время в которое может позвонить наш сотрудник или приехать курьер"></textarea>
                        <label for="form_7">Вы все заполнили?</label>
                        <input id="form_7" type="submit" class="button_style main_color" value="Отправить заявку!" class="main_color">                  
                    </form>
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
 
function send_mail()
{
    $_POST['form_1']=substr(htmlspecialchars(trim($_POST['form_1'])), 0, 
 
40);
    $_POST['form_2']=substr(htmlspecialchars(trim($_POST['form_2'])), 0, 
 
20);
    $_POST['form_3']=substr(htmlspecialchars(trim($_POST['form_3'])), 0, 
 
40);
    $_POST['form_4']=substr(htmlspecialchars(trim($_POST['form_4'])), 0, 
 
6);
    $_POST['form_5']=substr(htmlspecialchars(trim($_POST['form_5'])), 0, 
 
500);
    $_POST['form_6']=substr(htmlspecialchars(trim($_POST['form_6'])), 0, 
 
2000);
    
 
// создаем наше сообщение 
        $mess = ' 
        Имя отправителя:'.$_POST['form_1'].' 
        Контактный телефон:'.$_POST['form_2'].' 
Контактный E-mail:'.$_POST['form_3'].'
Приблизительный вес товара:'.$_POST['form_5'].'
Адрес:'.$_POST['form_4'].'
 Дополнительная информация:'.$_POST['mess']; 
        // $to - кому отправляем 
        $to = 'Keterus_Custom@gmail.com'; 
        // $from - от кого 
        $from='Keterus_Custom@gmail.com'; 
        mail($to, $_POST['name'], $mess, "From:".$from); 
        echo 'Спасибо! Ваше письмо отправлено.'; 
}
?>
Оба файла в одном корневом каталоге, как вы и говорили.

Заранее благодарен за ответ!
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
22.07.2015, 23:59
Вы только создали функцию. А ее еще же и вызвать надо

Добавлено через 51 секунду
и вообще зачем она Вам тут? уберите и все заработает
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
23.07.2015, 09:33  [ТС]
Заработало, спасибо!
Осталось две проблемы:

1) Русский текст введенный в полях приходит на почту в формате неясных символов. Понимаю что что-то не так с кодировкой, но как исправить - не знаю.
2) После отправки формы - переносится на пустую белую страницу с надписью "спасибо, ваша заявка отправлена". А как сделать так, чтобы например через несколько секунд после этого (или по нажатию клавиши на этой странице) перемещало обратно на сайт?

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
<?php 
 
    $_POST['form_1']=substr(htmlspecialchars(trim($_POST['form_1'])), 0, 40);
    $_POST['form_2']=substr(htmlspecialchars(trim($_POST['form_2'])), 0, 20);
    $_POST['form_3']=substr(htmlspecialchars(trim($_POST['form_3'])), 0, 40);
    $_POST['form_4']=substr(htmlspecialchars(trim($_POST['form_4'])), 0, 6);
    $_POST['form_5']=substr(htmlspecialchars(trim($_POST['form_5'])), 0, 500);
    $_POST['form_6']=substr(htmlspecialchars(trim($_POST['form_6'])), 0, 2000);
    
 
 
// создаем наше сообщение 
        $mess = ' 
        Имя отправителя: '.$_POST['form_1'].' 
        Контактный телефон: '.$_POST['form_2'].' 
Контактный E-mail: '.$_POST['form_3'].'
Приблизительный вес товара: '.$_POST['form_4'].'
Адрес: '.$_POST['form_5'].'
 Дополнительная информация: '.$_POST['form_6']; 
        // $to - кому отправляем 
        $to = 'Keterus.Custom@gmail.com'; 
        // $from - от кого 
        $from='Keterus.Custom@gmail.com'; 
        mail($to, $_POST['name'], $mess, "From:".$from); 
        echo 'Спасибо! Ваша заявка отправлена.'; 
 
 
if (!empty($_POST['submit'])) complete_mail(); 
?>
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
23.07.2015, 09:40
Лучший ответ Сообщение было отмечено Keter как решение

Решение

1) переобзываете html файлик в файл с расширением php;
2) строку
HTML5
1
<form id="form" action="send_mail.php" method="post" class="borders main_color" >
меняете на
HTML5
1
<form id="form" action="" method="post" class="borders main_color" >
;
3) строку
HTML5
1
<input id="form_7" type="submit" class="button_style main_color" value="Отправить заявку!" class="main_color">
меняете на
HTML5
1
<input id="form_7" type="submit" class="button_style main_color" value="Отправить заявку!" class="main_color" name="SendForm">
3) в том месте, где надо вывести сообщение "Спасибо! Ваша заявка отправлена" помещаете все содержимое из текущего файла php в конструкцию
PHP
1
2
3
4
5
<?
if (isset($_POST['SendForm'])){
//сюда помещаете код отправки сообщения
}
?>
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
23.07.2015, 10:09  [ТС]
Вопрос неофита - форма находится внутри огромного файла страницы сайта. Переобзывать нужно основной файл, или как-то выносить форму в отдельный файл? Если основной - не повлияет ли это на разметку и другие функции страницы?
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
23.07.2015, 10:44
можно не выносить. На разметку не повлияет
1
6 / 6 / 6
Регистрация: 15.10.2014
Сообщений: 98
23.07.2015, 12:18  [ТС]
Спасибо огромное вам за помощь! Все работает так как надо, проблем никаких. Для себя узнал много нового.
0
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 13
27.10.2015, 20:55
Добрый вечер, вот такая же была ситуация, попытался проделать все вышеописанное, ничего не приходит на почту..
у меня локальный, денвер, все работает нормально, возник вопрос, может ли не работать форма по причине косяка в денвере?

Добавлено через 6 минут
вот.
<!DOCTYPE html>
<html>
<head>
<META content="text/html; charset=utf8" http-equiv="Content-Type">

</head>
<body>

<?php

function send_mail()
{
$_POST['your_name']=substr(htmlspecialchars(trim($_POST['your_name'])), 0,

40);
$_POST['phone']=substr(htmlspecialchars(trim($_POST['phone'])), 0,

20);
$_POST['mytime']=substr(htmlspecialchars(trim($_POST['mytime'])), 0,

40);


// создаем наше сообщение
$mess = '
Имя отправителя:'.$_POST['your_name'].'
Контактный телефон:'.$_POST['phone'].'
Позвонить в:'.$_POST['mytime'];
// $to - кому отправляем
$to = 'admin@site.ru';
// $from - от кого
$from='admin@site.ru';
mail($to, $_POST['your_name'], $mess, "From:".$from);
echo 'Ваша заявка отправлена.';
}
?>

Добавлено через 1 минуту
<div id="contact_form">
<form action="" method="post">
<table>
<tbody><tr>
<th class="lable glow in">*&nbsp; Ваше имя:</th>
<td class="input"><input name="your_name" size="40" maxlength="30" class="input_field" type="text"></td>
</tr>
<tr>
<th class="lable glow in">*&nbsp;Телефон:</th>
<td class="input"><input name="phone" size="40" maxlength="30" class="input_field" type="text"></td>
</tr>

<tr>
<th class="lable glow in">*&nbsp; Укажите удобное<br>время:</th>
<td class="input"><input name="mytime" size="40" maxlength="30" class="input_field" type="text"></td>

</tr>
<br><br>
<br><br>
<tr><th>* - необходимо заполнить</th>

<td align="center">
<input name="Sendmail" type="submit" value="Отправить" class="submit_btn"> </td>

</tr>
</tbody></table>


</form>
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
27.10.2015, 21:38
так а денвер у вас же неполноценный веб-сервер. Он не умеет отправлять почту по умолчанию.. он ее куда-то, насколько я помню, складывает у себя, эмулируя (или симулируя) отправку, но ничего не отправляет

Добавлено через 29 секунд
складывает в какой-то файл.. покурите мануал по денверу, там описано д.б.
1
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 13
27.10.2015, 21:52
Спасибо за ответ, я подозревал что то такое..)

Добавлено через 3 минуты
так точно! вы правы, нашел какую-то папченку в денвере, там все мои письма... в -общем то .вот. спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2015, 21:52
Помогаю со студенческими работами здесь

Отправка e-mail из формы
Навеяло отсюда: https://www.cyberforum.ru/php-beginners/thread636238-page3.html Ребята, может не туда лезу, но может подскажете - есть...

Отправка сообщений из формы по e-mail
Привет всем!!! мне дали задание: Сделать HTML Страничку как отправления сообщения нуууу там имя эиэйл и сообщение!!!! Форму методом GET. и...

Отправка формы по e-mail на PHP
Настроен локальный сервер Apache 2.2+PHP 5.2.17. Нужно отправить данные из формы по электронной почте. Сразу ругался на функцию mail()....

Отправка e-mail с данными из формы
На лендинге есть форма заявки, в файле index она выглядит так &lt;div class=&quot;btnHead clearfix&quot; id=&quot;zakaz&quot;&gt; ...

Отправка формы регистрации на e-mail
Здравствуйте! У меня возникла проблема. Не знаю, как сделать так, чтобы форма отправлялась на e-mail только после того, как все данные...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru