@jugger1

Не отправляется сообщение на почту ,в чем может быть проблема?

Сами данные отправляются на php обработчик , а вот там уже ошибка ,не могу найти
<form  method="POST" id="callback" class="callback-form forms" enctype="multipart/form-data">
<input id="callback_phone" type="tel" placeholder="+7" name="phone">
<input id="callback_name" type="text" placeholder="Введите Ваше имя" name="name">
<textarea name="callback_comment" id="comment" cols="30" rows="10" placeholder="Введите комментарий                    (если необходимо)"></textarea>
 <input name="myfile" type="file" accept="image/*,image/jpeg">
<input type="submit" id="form-send" class="btn-form-callback" value="Сделать заказ">
</form>

// Отправка данных на сервер
$('#callback').trigger('reset');
$("#form-send").on("click",function(){
    console.log("3");
    "use strict";
   $("#callback").on("click", function(e){
    console.log("333");
    e.preventDefault();
    $.ajax({
      url: 'mail/php/send.php',
      type: 'POST',
      contentType: false,
      processData: false,
      data: new FormData(this),
      success: function(msg) {
        console.log(data);
        if (msg == 'ok') {
          alert('Сообщение отправлено');
          $('#callback').trigger('reset'); // очистка формы
        } else {
          alert('Ошибка');
        }
      }
    });
  });
});

// Файлы phpmailer
require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';

// Переменные, которые отправляет пользователь
$name = $_POST['name'];
$phone = $_POST['phone'];
$callback_comment = $_POST['callback_comment'];
$myfile = $_POST['myfile'];
echo $name;
echo $phone;
echo $callback_comment;
echo $myfile;


$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
    $msg = "ok";
    $mail->isSMTP();   
    $mail->CharSet = "UTF-8";                                          
    $mail->SMTPAuth   = true;

    // Настройки вашей почты
    $mail->Host       = 'smtp.gmail.com'; // SMTP сервера GMAIL
    $mail->Username   = 'вел логин'; // Логин на почте
    $mail->Password   = 'вел пароль'; // Пароль на почте
    $mail->SMTPSecure = 'ssl';
    $mail->Port       = 465;
    $mail->setFrom(' выбрал от кого будет письмо', 'admin'); // Адрес самой почты и имя отправителя

    // Получатель письма
    $mail->addAddress('выбрал получателя');  
    // Прикрепление файлов к письму
if (!empty($_FILES['myfile']['name'][0])) {
    for ($ct = 0; $ct < count($_FILES['myfile']['tmp_name']); $ct++) {
        $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['myfile']['name'][$ct]));
        $filename = $_FILES['myfile']['name'][$ct];
        if (move_uploaded_file($_FILES['myfile']['tmp_name'][$ct], $uploadfile)) {
            $mail->addAttachment($uploadfile, $filename);
        } else {
            $msg .= 'Не удалось прикрепить файл ' . $uploadfile;
        }
    }   
}


        // -----------------------
        // Само письмо
        // -----------------------
        $mail->isHTML(true);
    
        $mail->Subject = 'Заголовок письма';
        $mail->Body    = "<b>Имя:</b> $name <br>
        <b>Почта:</b> $phone<br><br>
        <b>Сообщение:</b><br>$callback_comment";


// Проверяем отправилось ли сообщение
if ($phone->send()) {
    echo "$msg";
} else {
echo "Сообщение не было отправлено. Неверно указаны настройки вашего тф";
}

} catch (Exception $e) {
    echo "Сообщение не было отправлено. Причина ошибки: {$phone->ErrorInfo}";
}
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
потому что должно быть не $phone, а $mail
if ($phone->send()) { // <------ должно быть $mail->send()

и то же самое в $phone->ErrorInfo

так как объект PHPmailer у вас в $mail
$mail = new PHPMailer
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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