Не работает форма обратной связи html, php

119
17 декабря 2020, 01:40

Я никогда разработкой сайтов не занималась, но вот пришлось:) Сайт dona-tela.by Форма в самом низу. В приложении обработчик данных. Эта форма уже была встроена в шаблон. Но я пробовала и 2 другие, тоже не работали.

Привязываю доменную почту.

Писала на хостинг. вот что ответили:

Цитата

При отправке с помощью PHP функции mail() в качестве адреса отправителя указан адрес на домене, не совпадающем с доменом сайта.

Это именно ваш случай.

Почтовый сервер получателя отказывается принимать письмо, так как в заголовке FROM (адрес отправителя) в письме указан адрес "snsnsm@mail.ru";, хотя в действительности письмо отправляется не от mail.ru. В качестве адреса отправителя необходимо указывать адрес на домене, на котором размещен сайт, т.е. "dona-tela.by".

В заголовке письма FROM Вам необходимо всегда указывать адрес отправителя на домене dona-tela.by.

К сожалению, мы не можем Вам помочь в написании и отладке скриптов, размещаемых на сервере. Для этого Вам следует обращаться к разработчику сайта.

<?php 
 
/* Задаем переменные */ 
$name = "Письмо Сайта"; 
$email = "info@dona-tela.by"; 
$tel = htmlspecialchars($_POST["tel"]); 
$website = htmlspecialchars($_POST["website"]); 
$message = htmlspecialchars($_POST["message"]); 
$bezspama = htmlspecialchars($_POST["bezspama"]); 
 
/* Ваш адрес и тема сообщения */ 
$address = "info@dona-tela.by"; 
$sub = "Сообщение с сайта ХХХ"; 
 
/* Формат письма */ 
$mes = "Сообщение с сайта dona-tela.by.\n 
Имя отправителя: $name  
Электронный адрес отправителя: $email 
Телефон отправителя: $tel 
Сайт отправителя: $website 
Текст сообщения: 
$message"; 
 
 
if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/ 
{ 
/* Отправляем сообщение, используя mail() функцию */ 
$from  = "From: Письмо Сайта <info@dona-tela.by> \r\n Reply-To: info@dona-tela.by \r\n"; 
if (mail($address, $sub, $mes, $from)) { 
    header('Refresh: 5; URL=https://dona-tela.by'); 
    echo ' 
     
    Письмо отправлено, через 5 секунд вы вернетесь на сайт Dona-tela.by';} 
else { 
    header('Refresh: 5; URL=https://dona-tela.by'); 
    echo ' 
     
    Письмо не отправлено, через 5 секунд вы вернетесь на сайт Dona-tela.by';} 
} 
exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */ 
?>

Answer 1

Что бы указать отправителя просто поменяйте

$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);

На свои данные, так как именно они именют отправителя в вашем коде

Например поставьте их

$name = "Письмо Сайта";
$email = "info@dona-tela.by";

А вот уже переменная $address содержит того кто примет письмо.

Менять переменные что бы приходило письмо с верными данными следует после

/* Формат письма */
$mes = "Сообщение с сайта dona-tela.by.\n
Имя отправителя: $name 
Электронный адрес отправителя: $email
Телефон отправителя: $tel
Сайт отправителя: $website
Текст сообщения:
$message";

Или просто поменяйте строку

$from  = "From: $name <$email> \r\n Reply-To: $email \r\n";

На

$from  = "From: Письмо Сайта <info@dona-tela.by> \r\n Reply-To: info@dona-tela.by \r\n";

Вот такой функцией я отправляю письма на своих проектах

function send($to, $subj, $text, $from_name = null, $from_address = null, $encoding = 'UTF-8', $is_html = true) {
    $mime = 'text/' . ($is_html ? 'html' : 'plain');
    $from_name = empty($from_name) ? "Отправлено с Сайта" :$from_name;
    $from_address = empty($from_address) ? "noreply@walfter.ru" : $from_address;
    $headers = "From: {$from_name} <{$from_address}>\r\n"
        . "Content-type: {$mime}; charset={$encoding}\r\n"
        . "Mime-Version: 1.0\r\n";
    $subj = '=?' . $encoding . '?B?' . base64_encode($subj) . '?=';
    return mail($to, $subj, $text, $headers);
}

Попробуйте ей... Но по идее и ваши заголовки нормально подходили

Answer 2
<?php
/* Задаем переменные */
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$tel = htmlspecialchars($_POST["tel"]);
$website = htmlspecialchars($_POST["website"]);
$message = htmlspecialchars($_POST["message"]);
$bezspama = htmlspecialchars($_POST["bezspama"]);
/* Ваш адрес и тема сообщения */
$address = "info@dona-tela.by";
$sub = "Сообщение с сайта ХХХ";
/* Формат письма */
$mes = "Сообщение с сайта dona-tela.by.\n
Имя отправителя: $name 
Электронный адрес отправителя: $email
Телефон отправителя: $tel
Сайт отправителя: $website
Текст сообщения:
$message";

if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
{
/* Отправляем сообщение, используя mail() функцию */
if (mail($address, $sub, $mes)) {
    header('Refresh: 5; URL=https://dona-tela.by');
    echo '
    Письмо отправлено, через 5 секунд вы вернетесь на сайт Dona-tela.by';}
else {
    header('Refresh: 5; URL=https://dona-tela.by');
    echo '
    Письмо не отправлено, через 5 секунд вы вернетесь на сайт Dona-tela.by';}
}
exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */
?>
READ ALSO
Callback для liqpay

Callback для liqpay

Пытаюсь работать с платёжной системой liqpay, в апи настраиваются два url: result_url и server_urlПервый отправляет пользователя на эту страницу, если он перейдёт...

126
Алгоритм сохранения любого файла

Алгоритм сохранения любого файла

Мне нужно дать пользователю делиться абсолютно любым файлом, при этом при загрузке на сервер использовать минимум проверок

136
Возможна ли передача файла через websocket?

Возможна ли передача файла через websocket?

Использую Ratchet php, я пытался считать файл по байтам и отправить их, но что-то не очень это ворк, есть ли другие способы ?

127
Составление Mysql запроса

Составление Mysql запроса

Как можно перенести определенные(поле статус которых 1) записи из 2ой таблицы в первую и при этом вставить в 1 дополнительные значения, которых...

112