Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
26 / 26 / 7
Регистрация: 05.04.2012
Сообщений: 248
1

Отправка писем

03.02.2015, 21:08. Просмотров 1183. Ответов 10
Метки нет (Все метки)


Есть простая форма:
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
<!DOCTYPE html>
 
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Автозапчасти от Вована - Отзыв клиента</title>
</head>
<body>
  <h2>Отзыв клиента</h2>
  <p>Вы можете послать нам свой отзыв</p>
  <form action="processfeedback.php" method="post">
    <p>Ваше имя<br />
      <input type="text" name="name" size="32" maxlength="40" />
    </p>
    <p>Адрес e-mail<br />
      <input type="text" name="email" size="32" maxlength="40" />
    </p>
    <p>Ваш отзыв<br />
      <textarea name="feedback" rows="6" cols="36"> </textarea>
    </p>
  <input type="submit" value="Отправить отзыв" />
</form>
</body>
</html>
и скрипт, который её обрабатывает:
PHP/HTML
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
<?php
  // создание коротких имен переменных 
  $name = trim($_POST['name']);
  $email = trim($_POST['email']);
  $feedback = trim($_POST['feedback']);
 
  // постоянная информация
  $toaddress = "alex51@myrambler.ru";
  $subject = "Отзыв с веб-сайта";
  $mailcontent = "Имя клиента: ".$name."\n" .
                 "E-mail клиента: ".$email."\n" .
                 "Комментарии клиента: \n".$feedback."\n";
  $fromaddress = "From: smarty-sample.esy.es";
 
  // отправка почтового сообщения с помощью функции mail()
  if(mail($toaddress, $subject, $mailcontent, $fromaddress)){
    echo "Письмо успешно отправлено!";
  } else {
    echo "Письмо не отправлено!";
  }
?>
 
<html>
<head>
  <title>Автозапчасти от Вована — Отзыв отправлен</title>
</head>
<body>
  <h1>Отзыв отправлен</h1>
  <p>Ваш отзыв (приведенный ниже) отправлен.</p>
  <p>Без nl2br:</p>
  <p><?php echo $mailcontent; ?></p>
  <p>С nl2br:</p>
  <p><?php echo nl2br($mailcontent); ?></p>
</body>
</html>
функция mail() судя по выводу возвращает true, но письмо на почту не приходит. В данном случае, чтобы не париться с настройками mail() я использовал хостинг, если надо, могу указать какой. Почему может не работать?

Добавлено через 21 минуту
Методом научного тыка, обнаружил, что если в функцию mail() не передавать 4-ый аргумент, то всё работает, если же с ним, то письмо не приходит. Кто-нибудь может объяснить почему так происходит?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2015, 21:08
Ответы с готовыми решениями:

Отправка писем с proxy
Приветствую всех!!! ребят кто знает есть скрипт анонимной отправки писем вот он, &lt;?php $mail =...

Отправка писем на почту через сайт
Здравствуйте, проблема выскакивает &quot;ошибка при отправке письма&quot;, сервер WAMP, установил sendmail в...

Отправка большого количества писем через SMTP
Здравствуйте. Есть такая задачка предположим у меня база майлов юзеров которые подписались на...

Отправка писем с сайта. (Понимаю, что уже избитая тема, но все же)
Доброго времени суток, Уважаемые! Вообще дело вот в чем, подскажите, что я делаю не так в...

10
25 / 25 / 9
Регистрация: 18.04.2013
Сообщений: 132
03.02.2015, 21:16 2
заголовки неправильно переданы
0
26 / 26 / 7
Регистрация: 05.04.2012
Сообщений: 248
03.02.2015, 21:23  [ТС] 3
Цитата Сообщение от Dee Snider Посмотреть сообщение
заголовки неправильно переданы
И что не так в данном заголовке From?
0
25 / 25 / 9
Регистрация: 18.04.2013
Сообщений: 132
03.02.2015, 21:23 4
Лучший ответ Сообщение было отмечено main.c как решение

Решение

Каждая строка заголовка должна заканчиваться \r\n для unix и \n для Windows, если не ошибаюсь

PHP
1
2
3
$headers = "From: admin@site.ru\r\n";
$headers .= "Mime-Version: 1.0\r\n";
$headers .= "Content-type:text/html; Charset=utf-8\r\n";
1
26 / 26 / 7
Регистрация: 05.04.2012
Сообщений: 248
07.02.2015, 20:19  [ТС] 5
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function notify_password($username, $password) {
  // Уведомляет пользователя о том, что его пароль изменен
 
  $conn = db_connect();
  $result = $conn->query("SELECT email FROM user
                          WHERE username='$username'");
  if (!$result || !$result->num_rows) {
    throw new Exception('Адрес электронной почты не найден.');
  } else {
    $row = $result->fetch_object();
    $email = $row->email;
    $mesg = "Ваш пароль для входа в систему PHPBookmark изменен на $password. \r\n"
            ."Пожалуйста, учтите это при будущем входе в систему. \r\n";
          
    if (!mail($email, 'Информация о входе в систему PHPBookmark', $mesg))
      throw new Exception('Не удается отправить электронную почту.'); 
  }
}
А здесь что не так? Вообще, как с mail() работать? Она возвращает true, а письмо не приходит все равно. Мне что, на кофейной гуще гадать, почему письмо не отправилось? Никаких тебе варнингов и ошибок!

Добавлено через 1 час 24 минуты
Кто-нибудь может подсказать что нет?
0
25 / 25 / 9
Регистрация: 18.04.2013
Сообщений: 132
07.02.2015, 21:50 6
Ну для начала вопрос, на локальном сервере работаешь или хостинг? Если локальный ищи письма в папке temp/sendmail
И еще, не PHP отправляет письма, а почтовый сервер.
0
1013 / 671 / 289
Регистрация: 04.04.2013
Сообщений: 2,686
07.02.2015, 23:25 7
Цитата Сообщение от main.c Посмотреть сообщение
Мне что, на кофейной гуще гадать, почему письмо не отправилось?
Функция mail() занимается тем, что отправляет данные почтовику smtp (или что там у вас?), а тот в свою очередь занимается отправкой письма.

Если возвращает true, значит функция отработала и успешно передала данные. Скорее всего нужно почтовик ваш настраивать.
0
26 / 26 / 7
Регистрация: 05.04.2012
Сообщений: 248
08.02.2015, 00:24  [ТС] 8
Цитата Сообщение от Dee Snider Посмотреть сообщение
Ну для начала вопрос, на локальном сервере работаешь или хостинг? Если локальный ищи письма в папке temp/sendmail
И еще, не PHP отправляет письма, а почтовый сервер.
Хостинг, мне было лень настраивать на локальном, но видимо прийдётся это сделать. И да, я понимаю, что не PHP отправляет, но как мне понять, что происходит с письмом потом. Может есть какие-то логи, которые дают хоть какую-то информацию. Вот как мне быть в данной ситуации?

Добавлено через 2 минуты
Цитата Сообщение от Mr Coder Посмотреть сообщение
Если возвращает true, значит функция отработала и успешно передала данные. Скорее всего нужно почтовик ваш настраивать.
В данном случае почтовик не мой, он на хостинге. Что можете посоветовать?
0
25 / 25 / 9
Регистрация: 18.04.2013
Сообщений: 132
08.02.2015, 00:25 9
Ну даже на том же хостингере есть "Почтовые Логи".
0
26 / 26 / 7
Регистрация: 05.04.2012
Сообщений: 248
08.02.2015, 00:31  [ТС] 10
Цитата Сообщение от Dee Snider Посмотреть сообщение
Ну даже на том же хостингере есть "Почтовые Логи".
Вот и все логи:
0
Миниатюры
Отправка писем  
26 / 26 / 7
Регистрация: 05.04.2012
Сообщений: 248
08.02.2015, 00:31  [ТС] 11
Мне кажется не очень информативно))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2015, 00:31

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

Рассылка писем клиентам
Имею базу клиентов около 200000. Появилась необходимость оповестить их о новых продуктах. Как лучше...

Чтение писем с gmail
Привет! Нужно читать письма с gmail. Понаходил какие-то библиотеки, но завести их не получилось....

Рассылка писем по расписанию
Здравствуйте! Имеются шаблоны писем которые должны отправляться допустим каждую неделю всем...

Рассылка писем средствами mail()
Привет, народ. Вопрос данный в первую очередь адресуется тем, кто имел опыт работы со злосчастным...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.