UNN4MED
@UNN4MED
Битрикс разработчик

Форма обратной связи по SMTP работает, вводя только мою почту? Как исправить?

Форма отправляется, только когда я поле email ввожу свою почту, которая стоит в настройке
На хостинге приходит ошибка 500, на локалке следующая ошибка:

Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: The following recipients failed: МОЯ ПОЧТА: sender address must match authenticated user in

Код PHP:
<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require "../../assets/libs/PHPMailer/src/PHPMailer.php";
require "../../assets/libs/PHPMailer/src/Exception.php";
require "../../assets/libs/PHPMailer/src/SMTP.php";

$mail = new PHPMailer(true);

$mail->IsSMTP();
$mail->CharSet = "UTF-8";
$mail->IsHTML(true);
// Настройки вашей почты
$mail->Host       = 'smtp.mail.ru'; // SMTP сервера вашей почты
$mail->Username   = ' МОЯ ПОЧТА '; // Логин на почте
$mail->Password   = ' МОЙ УНИКАЛЬНЫЙ ПАРОЛЬ MAIL.RU'; // Пароль на почте
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Port       = 587;

$name = $_POST["name"];
$email = $_POST["email"];
$number = $_POST["number"];
$textarea = $_POST["message"];
$email_template = "template_mail.html";

if ($textarea == '') {
    $textarea = 'Нет сообщения!';
}

$body = file_get_contents($email_template);
$body = str_replace('%name%', $name, $body);
$body = str_replace('%email%', $email, $body);
$body = str_replace('%number%', $number, $body);
$body = str_replace('%message%', $textarea, $body);

$mail->setFrom($email);
$mail->addAddress(" МОЯ ПОЧТА "); // Здесь введите Email, куда отправлять
$mail->Subject = "Письмо от " . $email;
$mail->MsgHTML($body);

if (!$mail->send()) {
    $message = "Ошибка отправки";
} else {
    $message = "Данные отправлены!";
}

$response = ["message" => $message];

header('Content-type: application/json');
echo json_encode($response);
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Вам же человеческим языком пишут, что нельзя подставлять липу в $mail->setFrom($email);
Или просто уберите эту строчку, или пишите в нее СВОЮ ПОЧТУ.

Как вариант, можете перед setFrom добавить addReplyTo()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
У вас, очевидно, имеет место заблуждение насчет того, что такое вообще форма обратной связи.
Это не уличная магия, которая трах-тибидох, и пришлет вам письмо от какого-то произвольного человека.
Это письмо, которое вы шлете себе сами, от своего имени, с той информацией, которую этот человек заполнил в форме.
Ответ написан
Комментировать
mahmudchon
@mahmudchon
Вы выпускали пароль для внешних приложений?
https://help.mail.ru/mail/security/protection/external
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 19:22
18000 руб./за проект
25 апр. 2024, в 19:21
10000 руб./за проект
25 апр. 2024, в 18:47
2795100 руб./за проект