Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Perl, PHP: отправка формы на e-mail

Автор: Fraerok
Дата сообщения: 25.04.2008 20:11
ничего не нахимичено, вот код формы:

Цитата:
<FORM action="send_form.php" method=post>
ФИО: <INPUT size=27 name="ФИО">
E-mail: <INPUT size=27 name="E-mail">
Тема: <INPUT size=27 name="Тема сообщения">
Кому: <select name="mailto">
<option value="1"> 1
<option value="2@2.ru"> 2
<option value="3@3.ru"> 3
</select>
Сообщение:<TEXTAREA name="Сообщение" rows=5 wrap=auto cols=45></TEXTAREA>
<INPUT type=submit value="Отправить сообщение"><input type="Reset" name="Reset1" value="Очистить">
</FORM>

поэтому content-type по умолчанию plain/text (если дописать enctype="plain/text" результат тот же)

Автор: Cheery
Дата сообщения: 25.04.2008 20:12
Fraerok

Цитата:
ничего не нахимичено, вот код формы:

при чем тут форма? заголовки формируемые для письма.. для функции mail
Автор: Fraerok
Дата сообщения: 25.04.2008 20:46
http://forum.ru-board.com/topic.cgi?forum=31&topic=2488#12

отсюда ведь все как и говорилось
Автор: Cheery
Дата сообщения: 25.04.2008 20:47
Fraerok

Цитата:
отсюда ведь все как и говорилось

ну и?
$headers .= "Content-Type: text/html;charset=win-1251\n";
Автор: Fraerok
Дата сообщения: 25.04.2008 20:52
да, я уже допер) убрал нафиг эту строчку.

В общем насчет того, как закодировать email'ы получателя я спрошу у знакомых, когда прийдут. А вот можно ли вывести отосланное сообщение после вы не подскажите?

Сейчас я в форме send_forum.php просто написал "Сообщение успешно отправлено."
а было бы еще прикольно под этим вывести отосланное сообщение.

И может все-таки есть смысл шапку включить?
Автор: Cheery
Дата сообщения: 25.04.2008 20:55
Fraerok

Цитата:
а было бы еще прикольно под этим вывести отосланное сообщение.

ну и в чем проблема то???
echo $message;

не выспались?
Автор: Fraerok
Дата сообщения: 25.04.2008 22:12
И не выспался тоже) Просто я в php - ноль без палочки.

В общем выводить-то я его вывожу, но там все поля выводятся в одну строчку, т.к. <br> нет в конце строк (/n не вопринимается html))
Можно, наверное, как-то после отправки сообщения на почту переделать "/n" на "<br>" для вывода сообщения об отправке на сайте?
Автор: Cheery
Дата сообщения: 25.04.2008 22:13

Цитата:
Можно, наверное, как-то после отправки сообщения на почту переделать "/n" на "<br>" для вывода сообщения об отправке на сайте?

www.php.net/nl2br
Автор: Fraerok
Дата сообщения: 25.04.2008 23:29
Всё, вроде все получилось)
Вот, кстати, как я из селекта в скрипте почту подставляю:

Цитата:
if (
$_POST["Agpecam"] == "1" ) {
$toemail = "mail1";
}
else if (
$_POST["Agpecam"] == "2" ) {
$toemail = "mail2";
}
else if (
$_POST["Agpecam"] == "3" ) {
$toemail = "mail3";
}

насколько я понимаю, хацкеры не смогут свое подсунуть.

Форму, кстати, можно глянуть здесь - http://www.parlament.ptz.ru/feedback/
только если сообщения тестировать - то выбирайте "Вебмастеру", чтобы чужие ящики не забрасывать.
Автор: Cheery
Дата сообщения: 25.04.2008 23:53
Fraerok

Цитата:
насколько я понимаю, хацкеры не смогут свое подсунуть.

ты и так спама наберешься..
1) светя мыла тут
2) не сделав защиту от ботов в форме - постить будут ну очень часто
Автор: Fraerok
Дата сообщения: 23.05.2008 12:07
Cheery
в общем на другом хостинге возникла проблема с этим скриптом... письма то уходят, то не уходят. В логах почтового сервера:
Цитата:
May 14 09:06:20 mx5 postfix/smtp[50437]: 5BC7E767754: to=<infoСOБАKАiva.onego.ru>, relay=mx.onego.ru[78.36.63.4], delay=1, status=bounced (host mx.onego.ru[78.36.63.4] said: 550-Verification failed for <ivaauto8СOБАKАv47.valuehost.ru> 550-Called: 217.112.42.3 550-Sent: RCPT TO:<ivaauto8СOБАKАv47.valuehost.ru> 550-Response: 553 sorry, that user not exists or domain isn't allowed to be relayed thru this MTA (#5.7.1) 550 Sender verify failed (in reply to RCPT TO command))

в поддержке сказали попробовать "отправлять с допольнительным параметром -f реальный@email для функции mail()"

как быть? =(
Автор: Cheery
Дата сообщения: 23.05.2008 19:30
Fraerok

Цитата:
в поддержке сказали попробовать "отправлять с допольнительным параметром -f реальный@email для функции mail()"

у функции mail нет параметров типа -f
они есть у sendmail, через который и шлется.
по умолчанию берет юзверя из под которого запущена.
вот и получается, что получатель письма пытается проверить адрес отправителя и его посылают.
для этого нужно менять в php.ini параметр
sendmail_path

Автор: Fraerok
Дата сообщения: 26.05.2008 07:58
Cheery
это нужно к администраторам сервера обратиться?
Автор: Arrancar
Дата сообщения: 27.06.2008 22:15
Люди помогите плиз!есть скрипт который отправляет письмо на один мэйл!нужен такой чтобы сначала в окне выбора выбирался человек,и в зависимости от того кого выбрали письмо отправлялось на конкретный мэйл,а не на один и тот же!
Автор: Cheery
Дата сообщения: 27.06.2008 22:20
Arrancar

Код:
<form method=post action=script.php>
<select name='person'><option value=0>Имя №1</option><option value=1>Имя №2</option>
</select>
<textarea name='message'></textarea>
<input type=submit value='Отправить'></form>
Автор: Arrancar
Дата сообщения: 28.06.2008 18:22
<?php
$emails=array('мыло_человека№','мыло_человека№2');
$email=$emails[$_POST['person']];
$Subject = "$_Post['Subject']";
$Message = $_POST['Email'].':'.$_POST['Name'].':'.$_POST['Message'];
$Headers = "From: имя<мыло>\n";
mail($ToEmail, $Subject, $Message, $Headers);
?>


Cheery скажи пожалуйста правильно или нет?если нет подправь
Автор: Cheery
Дата сообщения: 28.06.2008 18:24
Arrancar

Цитата:
скажи пожалуйста правильно или нет?

а попробовать?
желательно добавить проверку, что значение $_POST['person'] цифровое (или сразу преобразовать через intval) и в пределах размеров массива $emails
Автор: Arrancar
Дата сообщения: 28.06.2008 18:42
<?php
$emails=array('мыло_человека№','мыло_человека№2');
$email=$emails[$_POST['person']];
if (
$_POST["person"] == "1" ) {
$toemail = "mail1";
}
else if (
$_POST["person2"] == "2" ) {
$toemail = "mail2";
}
else if (
$_POST["person3"] == "3" ) {
$toemail = "mail3";
}

$Subject = "$_Post['Subject']";
$Message = $_POST['Email'].':'.$_POST['Name'].':'.$_POST['Message'];
$Headers = "From: имя<мыло>\n";
mail($ToEmail, $Subject, $Message, $Headers);
?>


так что ли?
Автор: Cheery
Дата сообщения: 28.06.2008 18:45
Arrancar

Цитата:
так что ли?

нет..
Цитата:
<?php
$emails=array('мыло_человека№','мыло_человека№2');
$id=intval($_POST['person']);
if ($id>=0 && $id<count($emails)
{
$ToEmail=$emails[$id];
$Subject = $_Post['Subject'];
$Message = $_POST['Email'].':'.$_POST['Name'].':'.$_POST['Message'];
$Headers = "From: имя<мыло>\n";
mail($ToEmail, $Subject, $Message, $Headers);
}
?>

Автор: Arrancar
Дата сообщения: 28.06.2008 18:49
В понидельник попробую запустить....спасибо
Автор: arrancarn
Дата сообщения: 30.06.2008 16:24
Cheery посмотри попробывал,скрипт не работает пишет вот что
Parse error: syntax error, unexpected T_VARIABLE in /var/home/giulior/public_html/order.php on line 6


вот форма

<form name="form1" method="post" action="order.php">

</noindex>
<table width="100%" border="0" cellpadding="7" cellspacing="0" bgcolor="#eeeeee" class="link_table">
<tr>
            <td align="right" valign="middle"><strong>Выберите:</strong></td>
<td>
<select name='person'>
<option selected="selected">Любой</option>
<option value=0>имя</option>
<option value=1>имя1</option>
<option value=2>имя2</option>
<option value=3>имя3</option>
<option value=4>имя4</option>
<option value=5>имя5</option>
<option value=6>имя6</option>
<option value=7>имя7</option>
<option value=8>имя8<option>
<option value=9>имя9<option>
<option value=10>имя10option>
<option value=11>имя11option>
<option value=12>имя12option>
</select></td>
         </tr>
             <tr>
<td align="right" valign="middle" ><strong>Ваше имя:</strong></td>
<td ><input name="name" type="text" id="name" size="40"></td>
</tr>
<tr>
<td align="right" valign="middle"><strong>Возраст:</strong></td>
<td><input name="age" type="text" id="age" size="3"></td>
</tr>
<tr>
<td align="right" valign="middle"><strong>E-mail <span class="style9">*</span>:</strong></td>
<td><input name="email" type="text" id="email" size="40" /></td>
</tr>
<tr>
<td align="right" valign="top"><strong>Задать вопрос<span class="style9"> *</span>:</strong></td>
<td><textarea name="comments" cols="35" rows="7" wrap="VIRTUAL" id="comments"></textarea>
<input name="confirm" type="hidden" id="confirm" value="yes"></td>
</tr>
<tr>
<td height="62"></td>
<td><input name="Submit" type="submit" class="text" value="Отправить"> </td>
</tr>
</table>
<p><strong class="style9">*</strong> - поля, обязательные для заполнения. </p>
</form>



вот скрипт


<?php
$emails=array('мэйл@bk.ru','мэйл@bk.ru','мэйл@bk.ru','мэйл@bk.ru');
$id=intval($_Post['person']);
{
if ($id>=0 && $id<count($emails)
$ToEmail=$emails[$id];
$subject= $_post['Subject'];
$Message=$_post['Email'].':'.$_post['Name'].':'.$_Post['Message'];
$Headers= "From:имя<мыло>\n;
mail($ToEmail,$Subject,$Message,$Headers);
}
?>
Автор: Cheery
Дата сообщения: 30.06.2008 19:06
arrancarn

Цитата:
Cheery посмотри попробывал,скрипт не работает пишет вот что

уважаемый.. сравните свой код с тем, что был приведен на пред. странице и найдите отличия.
Автор: arrancarn
Дата сообщения: 30.06.2008 19:53
Cheeryвсе равно пишет Parse error: syntax error, unexpected '{' in /home/tu2.ru/d/de/despirado/htdocs/www/order.php on line 5
Автор: Cheery
Дата сообщения: 30.06.2008 19:55
arrancarn

Код: <?php
$emails=array('мыло_человека№','мыло_человека№2');
$id=intval($_POST['person']);
if ($id>=0 && $id<count($emails)) #<- тут вторая скобка )
{
$ToEmail=$emails[$id];
$Subject = $_Post['Subject'];
$Message = $_POST['Email'].':'.$_POST['Name'].':'.$_POST['Message'];
$Headers = "From: имя<мыло>\n";
mail($ToEmail, $Subject, $Message, $Headers);
}
?>
Автор: arrancarn
Дата сообщения: 30.06.2008 20:03
Cheery хорошая новость скрипт работает и письмо отправляется,но вместо мыла человека отправившего пишет что-то такое===>имя <мыло@mail2.hostland.su>
а в место текста два двоеточия?может форма нета?
Автор: Cheery
Дата сообщения: 30.06.2008 20:09
arrancarn

Цитата:
может форма нета?

сделайте print_r($_POST); в скрипте и смотрите что и в каком виде отправляется.
Автор: pav4
Дата сообщения: 28.08.2008 13:24
а у кого нибудь на Unix работает mail() если SMTP сервер используется не localhost ?
Автор: zzxx1488
Дата сообщения: 20.10.2008 19:01
тоже интересует как можно реализовать работу mail() чтобы смтп был внешний
Автор: Cheery
Дата сообщения: 20.10.2008 19:02
zzxx1488

Цитата:
тоже интересует как можно реализовать работу mail() чтобы смтп был внешний

использовать готовые классы.. например phpmailer
Автор: vs62
Дата сообщения: 22.11.2008 20:34

Код: <?PHP
$FromName = "Брейль Андрюха
$FromEmail = "breil-an@mail.ru";
$ToName = "Брейль Андрей";
$ToEmail = "br.andy@bk.ru";
$Subject = "PHP ist toll Хорошо";
$Message = "Hallo Claudia! Хорошо";
$Charset = "UTF-8";

// mb_language("Ru"); // optional
mb_internal_encoding($Charset);
$From = mb_encode_mimeheader($FromName) . " <" . $FromEmail . ">";
$To = mb_encode_mimeheader($ToName) . " <" . $ToEmail . ">";
$Headers = "From: " . $From . "\r\n";
$Headers .= 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset='.$Charset.'' . "\r\n";
mail($To, "=?".$Charset."?B?".base64_encode($Subject)."?=", $Message, $Headers);
?>

Страницы: 1234567891011121314151617

Предыдущая тема: Как сделать так чтобы в MySQL грузились тяжёлые картинки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.