Страница контакта PHP не получает электронные письма

#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.