У меня есть базовая форма html на моем веб-сайте, и я хочу, чтобы данные, введенные в форму, были отправлены на мой адрес электронной почты после отправки, после нажатия кнопки отправки я попал в "Sent.html", который отображает только отправленное сообщение на экране, но когда я проверю учетную запись электронной почты, я не получил письмо.
HTML-форма....
<form name="contactform" method="POST" action="formphp.php">
<table width="450px">
<tr>
<td valign="top">
<label for="name">Name *</label>
</td>
<td valign="top">
<input type="text" name="Name" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top"">
<label for="email">Email *</label>
</td>
<td valign="top">
<input type="text" name="Email" maxlength="50" size="30">
</td>
</tr>
<td valign="top">
<label for="subject">Subject *</label>
</td>
<td valign="top">
<input type="text" name="Subject" maxlength="50" size="30">
</td>
</tr>
<tr>
<td valign="top">
<label for="questions">Question/Feedback *</label>
</td>
<td valign="top">
<textarea name="Question" cols="40" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<input type="submit" value="Submit">
</td>
</tr>
</table>
</form>
PHP-код...
<?php
/* set email */
$myemail = "[email protected]";
/* declare id */
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$subject = $_POST['Subject'];
$Questions = $_POST['Questions'];
/* set subject heading */
$subject = "Subject";
/* Message */
$message = "$Name + $Email + $Questions
";
/* redirect this form after email sent */
header("location: sent.html");
?>
Попробуйте использовать библиотеку PHPMailer: https://github.com/PHPMailer/PHPMailer
$mail = new PHPMailer(true);
$html = '
<!DOCTYPE html>
<html>
<head>
<title>Contact</title>
</head>
<body>
CONTENT HERE
</body>
</html>
';
try {
$mail->AddAddress('[email protected]', 'Domain Name');
$mail->SetFrom('[email protected]', 'Domain Name');
$mail->Subject = 'Contact from domain.com';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->MsgHTML($html);
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}else{
header("location: sent.html");
}
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
Проблема с вашим PHP-кодом заключается в том, что вы никогда не отправляли электронное письмо. Чтобы отправить почту в php, вы используете этот синтаксис:
mail($sendto, $subject, $msg)
В вашем случае вы должны поместить код сразу после того, как вы установите свое сообщение $, и код будет выглядеть так:
mail($myemail, $subject, $message)
Для получения дополнительной информации о php-почте читайте здесь: http://php.net/manual/en/function.mail.php
Добавьте следующий код insted header("location: sent.html");
if(mail($Email,$subject,$message))
header("location: sent.html");
else
die('Failed to send an email');