@Web-Building

HTML-форма ajax-ом отправляется, но не приходят данные из HTML-формы на Email. Ошибок нет никаких и нигде. В чём проблема?

Установил PHPMailer через Composer на хостинге. Ошибок нет ни в консоли ChromeDevTools, ни в логах...
А письма не приходят на Email: ни только текст, ни текст с прикреплёнными файлами!
Вот расположение файлов и папок, относящихся к проблеме:

/ home / homexnmx / vendor / autoload.php
Папка vendor состоит из папок:
- composer с файлами внутри
- phpmailer / phpmailer с папками и файлами внутри;
- autoload.php

/ home / homexnmx / composer.json
/ home / homexnmx / composer.lock
/ home / homexnmx / public_html / composer.phar - (раньше был здесь)
/ home / homexnmx / composer.phar / public_html - (теперь переставил сюда, но роли никакой это не сыграло)
/ home / homexnmx / public_html / php.ini
/ home / homexnmx / public_html / tmp_name/ uploads - (uploads - для загрузки файлов из формы)
/ home / homexnmx / public_html / tmp_name / submit.php - (submit.php - обработчик HTML-формы)
/ home / homexnmx / public_html / php / httpd.conf - (php_value include_path ".:/opt/alt/php72/usr/share/pear";)
/ home / homexnmx / public_html / adaptive.php - (HTML-форма)
/ home / homexnmx / public_html / JS / adaptive.js - (js-код отправки HTML-формы)

Вот обработчик submit.php

use PHPMailer\PHPMailer\PHPMailer;   // создайте класс PHPMailer
            use PHPMailer\PHPMailer\SMTP;
            use PHPMailer\PHPMailer\Exception;    
            
            require '/home/homexnmx/vendor/autoload.php'; 
            
            function sendmail($to, $nameto, $subject, $message, $file)  {
               $from  = "отправитель@gmail.com";  // адрес отправителя
               $namefrom = "Webbuilding";  // имя отправителя
               $mail = new PHPMailer();
               $mail->SMTPDebug = 0;
               $mail->CharSet = 'UTF-8';
               $mail->isSMTP();
               $mail->SMTPAuth   = true;
               $mail->Host   = "smtp.gmail.com";
               $mail->Port       = 465;
               $mail->Username   = $from;
               $mail->Password   = "******"; // пароль Email отправителя
               $mail->SMTPSecure = "ssl";
               $mail->setFrom($from, $namefrom);
               $mail->addCC($from, $namefrom);
               $subject = 'Из модальной формы - adaptive.php';
               $mail->Subject  = $subject;
               $mail->isHTML();
               $message = "Имя:  ".$_POST['user_name']."\r\nEmail:  ".$from."\r\nWebsite:  ".$_POST['user_website']."\r\nPhone:  ".$_POST['user_phone']."\r\nIP:  ".$_SERVER['REMOTE_ADDR']."\r\n\r\n Сообщение:\r\n\r\n   ".$_POST['user_comment'];
               $mail->Body = $message;
               
                  // Прикрипление файлов к письму
            if (!empty($file['name'][0])) {
                for ($ct = 0; $ct < count($file['tmp_name']); $ct++) {
                    $uploadfile = tempnam(sys_get_temp_dir(), sha1($file['name'][$ct]));
                    $filename = $file['name'][$ct];
                    if (move_uploaded_file($file['tmp_name'][$ct], $uploadfile)) {
                        $mail->addAttachment($uploadfile, $filename);
                        $rfile[] = "Файл $filename прикреплён";
                    } else {
                        $rfile[] = "Не удалось прикрепить файл $filename";
                    }
                }   
            }   
               
               $mail->AltBody  = $file;
               
               $to = 'получатель@mail.com'; // адрес получателя
               $nameto = 'Homexnmx';  // имя получателя
               $mail->addAddress($to, $nameto);
                //return $mail->send();
                  
                if ( $mail->send() ) {
                   echo $resalt = '<b>Your message sent!</b><br><br><pre><b> <a href="https://site.com" style="text-decoration:none;"> ⬅ Back to page</a></b></pre>';
                }
                
                else {
                   echo $resalt = 'Mailer Error';  
                } 
                  
            }


А вот Ajax отправки формы adaptive.js

var resalt = document.querySelector('.resalt'); 
        
            $("#modal-form").submit(function(e){
                e.preventDefault();
                if(document.getElementById('modal-form').user_name.value == '' || document.getElementById('modal-form').user_email.value == '' || document.getElementById('modal-form').user_website.value == '' || document.getElementById('modal-form').user_phone.value == ''){
                    valid = false;
                    return valid;
                }
                $.ajax({
                    type: "POST",
                    url: "https://site.com/tmp_name/submit.php",
                    data: $(this).serialize(),
                    success: function(data){
                        
                        resalt = '<b>JS Your message sent!</b>';  
                        
                        $('.block-popup').hide('');
                        $('.note').css('display', 'block');
                        $('.resalt').html(data);
                    },
                    error: function(jqXHR, exception) {
                        console.log(jqXHR);
                        console.log(exception);
                        
                        resalt = 'Mailer Error'; 
                        
                        $('.block-popup').hide('');
                        $('.note').css('display', 'block');
                        $('.resalt').html(data);
                    }
                });
                return;
            });


А вот и сама HTML-форма отправки, на всякий случай adaptive.php

<form action="https://site.com/tmp_name/submit.php" method="POST" id="modal-form" name="feedback_form" class="contact_form" enctype="multipart/form-data">
                        <ul>
                            <li>
                                <h2>Contact Us</h2>
                                <span class="required_notification">* Denotes Required Field</span>
                            </li>
                            <li>
                                <label>Name:</label>
                                <input type="text" name="user_name" placeholder="Username" required pattern="[A-z, А-я]{1,15}" id="name" />
                                <span class="form_hint">"Text"</span>  
                            </li>
                            <li>
                                <label>Email:</label>
                                <input type="email" name="user_email" placeholder="raid-gir@example.com" required id="email" />
                                <span class="form_hint">"name@example.com"</span>
                            </li>
                            <li>
                                <label>Website:</label>
                                <input type="url" name="user_website" placeholder="http://raidgir.com" required pattern="(http|https)://.+" id="website" />
                                <span class="form_hint">"http://example.com"</span>
                            </li>
                            <li>
                                <label>Phone:</label>
                                <input type="tel" name="user_phone" placeholder="+1 212 123 45 67" required pattern="^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$" id="phone" /> 
                                <span class="form_hint">"+1 212 123 45 67"</span>
                            </li>
                            <li>
                                <label>File:</label>
                                <input type="hidden" name="max_file_size" value="10000000" /> 
                                <input type="file" name="userfile[]" value="1" class="upload_files" multiple="yes" />  <!-- onchange="handleFiles(this.files)" -->
                            </li>
                            <li>
                                <label>Message:</label>
                                <textarea name="user_comment" cols="40" rows="6" required pattern="[A-z, А-я, 0-9]{1,15}" id="message"></textarea> 
                                <span class="form_hint mes">"Text"</span>   
                            </li>
                        </ul>
                        <button type="submit" id="btnSend" name="sendMail" class="submit">Submit Form</button>   
                    </form>


В чём может быть проблема? Может кто подскажет? Благодарю Вас за внимание!
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 1
nuykon
@nuykon
Full Stack Developer
1) Открываем dev tools браузера, например в гугл хроме, там открываем вкладку network, чуть ниже ставим метку на XHR. Смотрим отправляется ли запрос, что в теле запроса и что в теле ответа
5fcb33db56568689625910.png

Если запрос проходит успешно и в ответе вы видите -
<b>Your message sent!</b><br><br><pre><b> <a href="https://site.com" style="text-decoration:none;"> ⬅ Back to page</a></b></pre>
значит $mail->send() отработал. Если при этом письмо не пришло, то скорее всего функция mail отключена на хостинге.
Обычно при тестовом периоде у некоторых хостеров она отключена и необходимо обращаться в поддержку.

2) Проверить включена ли функция отправки на хостинге достаточно просто, используем стандартную функцию php, созайде php скрипт mail-test.php и разместите его в корне вашего сайта:
<?php
// Сообщение
$message = "Line 1\r\nLine 2\r\nLine 3";

// На случай если какая-то строка письма длиннее 70 символов мы используем wordwrap()
$message = wordwrap($message, 70, "\r\n");

// Отправляем
mail('you@email.com', 'My Subject', $message);
?>

Перейдите по ссылке you.domain/mail-test.php
Если вам письмо не пришло - то функция отключена на хостинге и необходимо писать в службу поддержки.

3) Если письмо пришло, значит что-то не так в вашем скрипте отправки.
Ответ написан
Ваш ответ на вопрос

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

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