Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
1

Функция mail() - письмо отправляется дважды

15.11.2013, 14:09. Показов 3301. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Письмо с сайта (отправляется через ajax) уходит нормально, но приходит в двух экземплярах. При этом не получается поставить в From содержимое переменной $email. В чем проблема?
Кож обработчика:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php if(isset($_POST['email'],$_POST['comments'])) {
 $name = trim($_POST['name']);
 $email = trim($_POST['email']);
 $comments = trim($_POST['comments']);
  if(empty($email) || empty($comments)) {
   echo 'Вы заполнили не все поля!';
  }
  else { 
   $mailto = 'email@gmail.com';
   $subject = 'Отзыв с сайта';
   if($_POST['name'] != '') {$message = 'Имя: <b>'.$name.'</b><br/>';}
   $message .= 'Email: <b>'.$email.'</b><br/>
                Отзыв: <b>'.$comments.'</b>';
   $headers = 'Content-type: text/html; charset=utf-8; \r\n From:'.$email;
 
   $mail = mail($mailto,$subject,$message,$headers);
    if(TRUE === $mail) echo 'Ваше сообщение успешно отправлено!';
      else echo 'Ошибка отправки сообщения, попробуйте еще раз.';
  }
}
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2013, 14:09
Ответы с готовыми решениями:

Не отправляется письмо
Всем привет. Недавно начал учить php и я не понимаю почему это сообщение не отравляется на почту....

Не отправляется письмо
День добрый. есть такой код: if (isset($_POST)) { mail(&quot;adr@inbox.ru&quot;, &quot;the subject&quot;,...

Не отправляется письмо на почту
Здравствуйте. Помогите пожалуйста. Есть форма восстановления пароля по e-mail: &lt;?php...

Почему письмо не отправляется
Скопипастил маленькую программку с инета &lt;?php $to = &quot;тут мой реальный адрес@mail.ru&quot;; //...

14
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
15.11.2013, 14:23 2
а теперь html и js в студию. как там оно формируется, ajax запрос?
0
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
15.11.2013, 14:34  [ТС] 3
СКРИПТ
Javascript
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
<script type="text/javascript">
$(document).ready(function(){
    
 $('#contactform').submit(function(stop){
stop.preventDefault();
 
 
var name=$('input[name=name]').val();
var email=$('input[name=email]').val();
var comments=$('textarea[name=comments]').val();
 
   $.ajax({
      type: "post",
      url: "/ob.php", 
    
       data:({name:name,email:email,comments:comments,send:"1"}),
      success: function(result)
        {
         //$('#result').html(result);
         if (result == 'Ваше сообщение успешно отправлено!') {$('#contactform').fadeOut();
         $('#result').fadeOut();}
         if (result != 'Ваше сообщение успешно отправлено!') {$('#result').html(result);}
        }
});
});
      
 });/*end  ready*/
 </script>
HTML:
HTML5
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
<form method="post" action="/ob.php" name="contactform" id="contactform">
 
            <fieldset>
 
                <div style="float:left">
                    <label for="name" accesskey="U">Имя:</label>
                        <input name="name" type="text" id="name"><mark class="validate"></mark>
                </div>
 
                <div style="float:right">
                    <label for="email" accesskey="E">Email: <span>*</span></label>
                    <input name="email" type="email" id="email" pattern="^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$"><mark class="validate"></mark>
                </div>
 
                <div>
                    <label for="comments" accesskey="C">Сообщение: <span>*</span></label>
                    <textarea name="comments" cols="40" rows="3" id="comments" spellcheck="true"></textarea><mark class="validate"></mark>
                </div>
 
            </fieldset>
 
            <input type="submit" class="submit" id="submit" value="Отправить">
            <div class="clearfix"></div>
 
        </form>
<div id="result"></div>
Добавлено через 6 минут
stop.preventDefault(); не работает мне кажется
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
15.11.2013, 14:37 4
Javascript
1
2
3
4
5
 $('#contactform').submit(function(stop){
 ...
 ...
  return false;
});
return false для submit предотвращает обычную отправку через форму.
0
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
15.11.2013, 14:40  [ТС] 5
А что насчет добавления в From переменной $email?
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
15.11.2013, 14:45 6
не понял вопроса?
0
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
15.11.2013, 14:53  [ТС] 7
Пользователь заполняет поле с email,
Я хочу его email поставить в заголовки (в поле "от кого")
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
15.11.2013, 15:03 8
Цитата Сообщение от 2m2 Посмотреть сообщение
Пользователь заполняет поле с email,
где-то читал что
ни один браузер не поддерживает ни одного HTML полностью
От себя добавлю html 5. Может быть попробовать использовать input type="text" а не type="email"?
0
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
15.11.2013, 15:20  [ТС] 9
Ну содержимое этого поля обработчик видит, но в "From" не ставит
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
15.11.2013, 15:30 10
Скажу лишь, что я тоже всегда для email пользовался полем type=text. А проверку на правильность ввода несложно сделать либо по onBlur, либо на стороне сервера.
0
ищите меня в нирване
36 / 36 / 5
Регистрация: 23.10.2013
Сообщений: 198
15.11.2013, 17:47 11
перед from стоит это:
Цитата Сообщение от 2m2 Посмотреть сообщение
\r\n
виндовый стандарт вовсе не стандарт. Рискну предположить, что надо ставить \n или вообще достаточно точки с запятой
Вдруг поможет..
0
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
18.11.2013, 13:18  [ТС] 12
Так то же не хочет работать
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
18.11.2013, 17:37 13
\r\n в одинарных кавычках не катят. Ставь в двойных кавычках
PHP
1
2
   $headers = "Content-type: text/html; charset=utf-8; \r\n";
$headers .= "From: $email";
Разбиваю добавление заголовков на строки уже для себя, чтобы не упустить тот момент, что перед новым заголовком не должно быть пробела в начале строки.
1
2 / 2 / 9
Регистрация: 12.05.2011
Сообщений: 291
18.11.2013, 18:04  [ТС] 14
А скрытую копию как поставить?
PHP
1
2
3
$headers = "Content-type: text/html; charset=utf-8; \r\n";
$headers .= "Bcc: ".$email."\r\n";
$headers .= "From: ".$email;
Верно?
0
60 / 56 / 5
Регистрация: 17.08.2011
Сообщений: 244
18.11.2013, 23:02 15
Верно
вот тут некоторые моменты развернуты, например (вкупе с прикладной частью): http://phpclub.ru/detail/article/mail
1
18.11.2013, 23:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2013, 23:02
Помогаю со студенческими работами здесь

Не отправляется письмо PHP
Добрый день. Нашёл на стороннем форуме систему отправки письма при помощи PHP, но письмо почему-то...

Не отправляется письмо на почту
Здравствуйте столкнулся с такой проблемой как обратная связь на сайте. Проблема в том что письмо...

Не отправляется письмо с формы
Здравствуйте, форумчане. Нужна помощь, не могу разобраться, почему не работает форма отправки...

Письмо с сайта отправляется в спам
На сайте есть php-скрипт, который по запросу пользователя отправляет ему письмо. Так вот, это...


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

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