#php #html
#php #HTML
Вопрос:
Недавно я создал страницу контактов, при заполнении всего и нажатии «Отправить» я никогда не получаю электронные письма.
Я практически ничего не знаю о php, поэтому я немного потерялся
Вот мой PHP:
<?php
if(isset($_POST['email'])) {
$email_to = "scxrzlemedia@outlook.com";
$email_subject = "Inquiry from scxrzle media";
function died($error) {
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
if(!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['phone']) ||
!isset($_POST['subject']) ||
!isset($_POST['message'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$name = $_POST['name'];
$email_from = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-] @[A-Za-z0-9.-] .[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-] $/";
if(!preg_match($string_exp,$name)) {
$error_message .= 'The Name you entered does not appear to be valid.<br />';
}
if(strlen($message) < 1) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.nn";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "First Name: ".clean_string($name)."n";
$email_message .= "Email: ".clean_string($email_from)."n";
$email_message .= "Phone: ".clean_string($phone)."n";
$email_message .= "Subject: ".clean_string($subject)."n";
$email_message .= "Message: ".clean_string($message)."n";
$headers = 'From: '.$email_from."rn".
'Reply-To: '.$email_from."rn" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- Still need to add this when fixed-->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Scxrzle Media Contact Page</title>
<link rel="stylesheet" type="text/css" href="css/style1.css">
</head>
<body>
<header>
<div class="main">
<div class="logo">
<image src="logo.png">
</div>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="service.html">Services</a></li>
<li><a href="https://t.me/s/spiccyvouches">Vouches</a></li>
<li><a href="about.html">About</a></li>
<li class="active"><a href="contact.html">Contact</a></li>
<div class="contact-form">
<form action="send_form_email.php" method="post">
<div class="txtb">
<div class="contact-w3">
<form action="send_form_email.php" method="post">
<label>Name</label>
<input type="text" name="name" placeholder="Your name" required>
<div class="row">
<div class="contact-left-w3">
<label>Email</label>
<input type="text" name="email" placeholder="Email address" required>
</div>
<div class="contact-right-w3l">
<label>Phone</label>
<input type="text" name="phone" placeholder="Phone number" required>
</div>
<div class="clear"></div>
</div>
<label>Subject</label>
<input type="text" name="subject" placeholder="Subject" required>
<div class="row1">
<label>Message</label>
<textarea placeholder="Message" name="message"></textarea>
</div>
<div class="textb">
<input type="submit" value="Send message">
</div>
</body>
</div>
</header>
</body>
</html>
Я знаю, что в панели управления сайтами есть что-то, касающееся PHP, но я не уверен, нужно ли мне что-либо в этом делать. Я использую infinityfree в качестве своего хостинг-провайдера для опций php, у него есть phpMyAdmin, базы данных MySQL и некоторые другие.
Комментарии:
1. Похоже, что
mail()
функция сильно ограничена вашим хостинг-провайдером Я предлагаю использовать Swift Mailer или Symfony Mailer в качестве альтернативы стороннему поставщику услуг электронной почты2. Также вы должны удалить
@
в своем@mail()
вызове, чтобы увидеть, выдает ли он какие-либо ошибки. В общем, вам следует избегать использования@
для подавления ошибок. Вместо этого убедитесь, чтоdisplay_errors
иerror_reporting
настроены соответствующим образом для сред разработки и производства. Вы можете использоватьprint_r(error_get_last());
для отображения сообщения об ошибке приmail()
возвратеfalse
.3. Вы пытались отправить электронное письмо самому себе, используя только mail() (отключив остальную часть PHP-кода)? Кроме того, иногда mail() не работает, если страница php не имеет кодировки UTF-8.