Как отправить данные на почту?


yaparoff
2013

Есть форма, которая принимает имя пользователя (name=»name») и его телефон (name=»phone»).

Как сделать так, что бы при нажатии кнопки «отправить» эти данные отправлялись на мою почту? Подскажите, пожалуйста, самый простой код без лишних заморочек.


LEOnidUKG


bruder

url.php


<?php

$to = "email@email.com";
$subject = "Сообщение с сайта";

if(isset($_POST["submit"]))
{
if(!preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:.?[a-z0-9]+)?.[a-z]{2,5})$/i",trim($_POST["email"])))
{
$message = "<div id="message" class="error">Указанный email не соответствует формату!</div>";
}
else
{
mail($to, iconv ('utf-8', 'windows-1251',$subject), $_POST["theme"]."nn".iconv ('utf-8', 'windows-1251',$_POST["comment"]).iconv ('utf-8', 'windows-1251',$_POST["name"]).".nEmail: ".$_POST["email"]);
$message = "<div id="message" class="success">Сообщение успешно отправлено!</div>";
}
}

?>


<form class="contact" method="post" action="">

<div>

<div>

<span class="label">Ваш email:</span>

<input class="input" name="email" type="text" required>

</div>

<div>

<span class="label">Сообщение:</span>

<textarea rows="10" cols="45"class="input" name="comment" required></textarea>

</div>

<div>

<span class="label"></span>

<input class="btn" name="submit" type="submit" value="Отправить">

<?=$message?>

</div>

</form>


SeVlad

bruder:

mail($to, iconv ('utf-8', 'windows-1251',$subject), $_POST["theme"]."nn".iconv ('utf-8', 'windows-1251',$_POST["comment"]).iconv ('utf-8', 'windows-1251',$_POST["name"]).".nEmail: ".$_POST["email"]);

Уже за это надо руки отбивать.

Хотя на большинстве правильно настроенных серверов эта дыра не отправится. 🙂


bruder

SeVlad, Какая дыра, если код отправляет форму лишь на вбитый в него емейл?


estic

bruder, существование «реальных» POST-параметров не проверяется.

И с кодированием символов у вас большие проблемы. Полностью отсутствует кодирование по стандарту. Также в тексте сообщения (третий параметр mail) вы часть данных преобразуете в Windows-кодировку, а часть нет. Получается смешение кодировок в одном тексте.

———- Добавлено 10.04.2020 в 09:58 ———-

В наше время нормально использовать такую отправку без какой-либо надежной защиты от автоспама невозможно.

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


Sitealert

bruder:
SeVlad, Какая дыра, если код отправляет форму лишь на вбитый в него емейл?

Потенциальная дыра там в необработанном $_POST. Надо отфильтровать небезопасные символы. Хотя это и просто часть сообщения, но мусору там делать нечего.

Но скорее всего, не отправится, а если отправится, то с большой вероятностью уйдёт в спам или не прочитается, потому как не хватает заголовков/параметров.


LEOnidUKG

Sitealert:
Потенциальная дыра там в необработанном $_POST. Надо отфильтровать небезопасные символы. Хотя это и просто часть сообщения, но мусору там делать нечего.

Там же регуляркой проверяется всё. Хотя она уже не нужна т.к. давно есть filter_var(‘bob@example.com’, FILTER_VALIDATE_EMAIL)


Sitealert

LEOnidUKG:
Там же регуляркой проверяется всё.

Нет, ничего не проверяется, кроме мэйла.

Хотя мало кто этим заморачивается.


suffix

Пусть опять напишут что я предлагаю из пушки по воробьям но таки правильнее через msmtp на MTA (допустим exim).

А нормально настроенный exim всё что надо проверит сам.


saanvi

<FORM NAME=»form» METHOD=»post» ACTION=»mailto:your@adress.ru?subject=Hello world» ENCTYPE=»text/plain»>

</FORM>

🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *