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

  • Автор темы Molag_Bal
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Molag_Bal

Ребята помогите :)
Вот уже 3 день мучаюсь.Пытаюсь на сайте разместить форму отправки сообщений на майл/или сохранения данных внесенных в форме в некоем файле.Перепробывал множество исходников .Не помогает .ПОдскажите на пальцах, форму и куда что прописывать.Спасибо.
 
G

Gisma

Тебе форма HTML-нужна? либо код для реакции на форму?
 
H

Hetman

уточни у хостера есть ли такая возможность! я раз раз столкнулся с таким что мыло можно отправить только в пределах домена. Отправка писем на другие сервера была заблокирована! как объяснил хостер - с целью противодействия спаму. возможно тебе придётся протестить форму у хостера на безопастность.
 
M

Molag_Bal

Hetman - то есть я так понимаю ,что сообщения будут приходить на мыло которое создано в домене ,то есть на сервер где лежит сайт...а как создать можно по -подробнее
Gisma- нужна любая форма с помощью которой я мог получать вписанные в нее данные
 
H

Hetman

попробуй эту - link removed когда-то давно заливал на codeby.net уже даже не помню на сколько она работоспособна и функциональна
 
M

Molag_Bal


Ура...вот моя рабочая форма , подскажите а как можно сделать чтобы не вписыватьв вкладку TO \ имя ящика ,а чтобы он уже был забит в этой строке и затемнен - чтобы невозможно его было исправить .Спасибо
 
M

Molag_Bal

ЧЕ то не работает -точнее рабоатет но пересылает на страницу мол не ввели емайл и письмо не доходит
вводтл в строке \\\\\\\\\\\\\<tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr> \\\\\\\\\\\\\\
вместо \\\\\\\\\\\><input type=text name=mail_to maxlength=32>\\\\\\\\\\\\\\
 
M

Molag_Bal

может что то надо прописывать в скрипте PHP//////////
<?php

if(empty($_POST['mail_to'])) exit("Введите адрес получателя");

// проверяем правильности заполнения с помощью регулярного выражения

if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com");

$picture = "";

// Если поле выбора вложения не пустое - закачиваем его на сервер

if (!empty($_FILES['mail_file']['tmp_name']))

{

// Закачиваем файл

$path = $_FILES['mail_file']['name'];

if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;

}

$thm = $_POST['mail_subject'];

$msg = $_POST['mail_msg'];

$mail_to = $_POST['mail_to'];

// Отправляем почтовое сообщение

if(empty($picture)) mail($mail_to, $thm, $msg);

else send_mail($mail_to, $thm, $msg, $picture);

// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)

function send_mail($mail_to, $thema, $html, $path)

{ if ($path) {

$fp = fopen($path,"rb");

if (!$fp)

{ print "Cannot open file";

exit();

}

$file = fread($fp, filesize($path));

fclose($fp);

}

$name = "file.ext"; // в этой переменной надо сформировать имя файла (без всякого пути)

$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём

$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.

$headers = "MIME-Version: 1.0;$EOL";

$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";

$headers .= "From: address@server.com";



$multipart = "--$boundary$EOL";

$multipart .= "Content-Type: text/html; charset=windows-1253$EOL";

$multipart .= "Content-Transfer-Encoding: base64$EOL";

$multipart .= $EOL; // раздел между заголовками и телом html-части

$multipart .= chunk_split(base64_encode($html));



$multipart .= "$EOL--$boundary$EOL";

$multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";

$multipart .= "Content-Transfer-Encoding: base64$EOL";

$multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";

$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла

$multipart .= chunk_split(base64_encode($file));



$multipart .= "$EOL--$boundary--$EOL";



if(!mail($mail_to, $thema, $multipart, $headers))

{return False; //если не письмо не отправлено

}

else { //// если письмо отправлено

return True;

}

exit;

}

?>\\\\\\\\\\\\\\\\\\\\
______________________________________________________________
Может что то надо тут прописывать...
 
M

Molag_Bal

Ребята все решили и сразу набрасывается другой вопрос .Как сделать чтобы в форме вписать еще рамки для тектста и нажатием кнопки отправить все данные отправлялись .Я примитивно сделал копирование строки
<tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td>
но при отправке отправлялся только последний текст ,а в предыдущих рамках нет....думаю что проблема в ней
</tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr> может надо добавить значение colspan=2,3,4,5... и так же переименовать рамки с названием ,тока как ве это устроить у мня не получается
подскажите как сделать
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!