Задать вопрос
pixelbox
@pixelbox
студент 4 курс, пишу диплом

Не работает phpmailer на хосте, что делать?

код send.php
<?php

require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';
// Переменные, которые отправляет пользователь
$name = $_POST['name'];
$email = $_POST['email'];
$text = $_POST['text'];
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
    $msg = "ok";
    $mail->isSMTP();   
    $mail->CharSet = "UTF-8";                                          
    $mail->SMTPAuth   = true;
    // Настройки вашей почты
    $mail->Host       = 'smtp.yandex.ru'; // SMTP сервера GMAIL
    $mail->Username   = 'login@yandex.ru'; // Логин на почте
    $mail->Password   = 'password065123451'; // Пароль на почте
    $mail->SMTPSecure = 'ssl';
    $mail->Port       = 465;
    $mail->setFrom('bmk-site@yandex.ru', 'YOUR NAME'); // Адрес самой почты и имя отправителя
    // Получатель письма
    $mail->addAddress('ilya.malishckin@yandex.ru');  
    $mail->addAddress('youremail@gmail.com'); // Ещё один, если нужен
    // Прикрипление файлов к письму
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> $email<br><br>
        <b>Сообщение:</b><br>$text";
// Проверяем отравленность сообщения
if ($mail->send()) {
    echo "$msg";
} else {
echo "Сообщение не было отправлено. Неверно указаны настройки вашей почты";
}
} catch (Exception $e) {
    echo "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}


код формы
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Пример работы PHPMAILER</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" id="form">
 <p>Имя</p>
 <input placeholder="Представьтесь" name="name" type="text" >
 <p>Email</p>
 <input placeholder="Укажите почту" name="email" type="text" >
 <p>Сообщение</p>
 <textarea name="text"></textarea>
 <p>Прикрепить файлы</p>
 <input type="file" name="myfile[]" multiple id="myfile">
 <p><input value="Отправить" type="submit"></p>
</form>
</body>
</html>
<script src="jquery-3.4.0.min.js"></script>
<script>
// Отправка данных на сервер
$('#form').trigger('reset');
$(function() {
  'use strict';
  $('#form').on('submit', function(e) {
    e.preventDefault();
    $.ajax({
      url: 'send.php',
      type: 'POST',
      contentType: false,
      processData: false,
      data: new FormData(this),
      success: function(msg) {
        console.log(msg);
        if (msg == 'ok') {
          alert('Сообщение отправлено');
          $('#form').trigger('reset'); // очистка формы
        } else {
          alert('Ошибка');
        }
      }
    });
  });
});
</script>


на хосте выдает просто слово "ошибка" , через локальный сервер письма на почту приходят.
  • Вопрос задан
  • 1311 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
coderisimo
@coderisimo
Чтобы не гадать на кофейной гуще передайте true в конструктор . Так вы увидите какие ошибки имеют место.

new PHPMailer\PHPMailer\PHPMailer(ТРУ!!!);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
pixelbox
@pixelbox Автор вопроса
студент 4 курс, пишу диплом
сори я даун
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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