Как отправить форму на почту?

У меня есть 5 инпутов. После их заполнения и нажатии кнопки "отправить" данные этих форм должны приходить на почту. Тема должна быть фиксированной. Email в коде также должен быть фиксированный, на который собственно должно приходить письмо. Как это можно реализовать? Можно ли пример кода?
  • Вопрос задан
  • 66271 просмотр
Решения вопроса 1
broder4ik
@broder4ik
Допустим, твоя форма:

<html>
<head>
  <title>Форма обратной связи</title>
</head>
<body>
  <form method="post">
Ваше имя: <input type="text" name="name" placeholder="Иван">
Email для связи: <input type="email" name="email" placeholder="адрес электронной почты">
Ваше сообщение: <textarea name="message" rows="5"></textarea>
<input type="submit" value="отправить">
</form>
</body>
</html>


Тогда создавай php с таким содержанием:

<?php
// несколько получателей
$to  = 'aidan@example.com' . ', ';  // обратите внимание на запятую
$to .= 'wez@example.com';

// тема письма
$subject = 'Письмо с моего сайта';

// текст письма
$message = 'Пользователь' . $_POST['name'] . ' отправил вам письмо:<br />' . $_POST['message'] . '<br />
Связяться с ним можно по email <a href="mailto:' . $_POST['email'] . '">' . $_POST['email'] . '</a>'
;

// Для отправки HTML-письма должен быть установлен заголовок Content-type
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

// Дополнительные заголовки
$headers .= 'To: Иван <Ivan@example.com>' . "\r\n"; // Свое имя и email
$headers .= 'From: '  . $_POST['name'] . '<' . $_POST['email'] . '>' . "\r\n";


// Отправляем
mail($to, $subject, $message, $headers);
?>


Правки для realt:

Допустим, твоя форма:

<html>
<head>
  <title>Форма обратной связи</title>
</head>
<body>
  <form method="post">
Инпут 1: <input type="text" name="input1" placeholder="Инпут 1">
Инпут 2: <input type="text" name="input2" placeholder="Инпут 2">
Инпут 3: <input type="text" name="input3" placeholder="Инпут 3">
Инпут 4: <input type="text" name="input4" placeholder="Инпут 4">
Инпут 5: <input type="text" name="input5" placeholder="Инпут 5">
<input type="submit" value="отправить">
</form>
</body>
</html>


Тогда создавай php с таким содержанием:

<?php
// несколько получателей
$to  = 'aidan@example.com' . ', ';  // обратите внимание на запятую
$to .= 'wez@example.com';

// тема письма
$subject = 'Письмо с моего сайта';

// текст письма меняется он!!
$message = $_POST['input1'] . '<br />' . $_POST['input1'] . '<br />' . $_POST['input1'] . '<br />' . $_POST['input1'];

// Для отправки HTML-письма должен быть установлен заголовок Content-type
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

// Дополнительные заголовки
$headers .= 'To: Иван <Ivan@example.com>' . "\r\n"; // Свое имя и email
$headers .= 'From: '  . $_POST['name'] . '<' . $_POST['email'] . '>' . "\r\n";


// Отправляем
mail($to, $subject, $message, $headers);
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
svd71
@svd71
php.net/manual/ru/function.mail.php

и снизу заголовок "Пример #4 Отправка HTML-сообщения".

во вложенной форме action нужно указывать с именем сервера и протокола. Покрайней мере get запросы у меня отправляло.
Ответ написан
Комментировать
@melnikov_m
Я предпочитаю использовать PHPmailer библиотеку. Не надо морочиться с заголовками, много плюшек и легко расширять при необходимости
require_once('../class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"
$body             = "body"
$body             = eregi_replace("[\]",'',$body);

$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo("name@yourdomain.com","First Last");

$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");

$mail->Subject    = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);


$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы