Функция почты PHP не отправляет электронные письма - PullRequest
0 голосов
/ 09 июня 2019

У меня есть форма, и я хочу, чтобы люди отправляли ее на свою электронную почту. Поэтому я добавил почту к коду mail ($ to, $ subject ....). Если я введу значение в $ to вручную (например, $ to = "xxx.example.com"), письмо придет. Тем не менее, это решение нецелесообразно, потому что мне нужно отправлять электронную почту с помощью ввода пользователя. Я создал окно предупреждения с полем ввода, используя JavaScript:

function prompt($prompt_msg){ 
echo("<script type='text/javascript'> var answer = prompt('".$prompt_msg."',); </script>");
$answer = "<script type='text/javascript'> document.write(answer); </script>";
return($answer);
}
$prompt_msg = "Zadejte Váš email:";
$name = prompt($prompt_msg);

Если я печатаю значение с помощью echo ($ name), адрес электронной почты отображается, но письмо не отправляется. Поэтому я создал значение для нескольких сообщений:

$recipients = array ("xxx@yyy.com", $name, "yyy@xxx.com");

на адрес электронной почты xxx и адрес электронной почты yyy письмо пришло, но если я просмотрел получателей электронной почты в почтовом ящике yyy вместо xxx, yyy и значений из $ name, он показал это:

Recipients - xxx, yyy, scripttype='text/javascript'@ssd3.jh-pro.cz
answer <document.write@ssd3.jh-pro.cz>
/script@ssd3.jh-pro.cz

Это означает, что вместо содержимого $ name электронное письмо отправляется по адресу:

scripttype='text/javascript'@ssd3.jh-pro.cz,
answer <document.write@ssd3.jh-pro.cz>,
/script@ssd3.jh-pro.cz

Знаете ли вы, почему это происходит? Заранее благодарю за помощь

function prompt($prompt_msg){ 
 echo("<script type='text/javascript'> var answer = 
prompt('".$prompt_msg."',); </script>");
 $answer = "<script type='text/javascript'> document.write(answer); </script>";
 return($answer);
}
$prompt_msg = "Zadejte Váš email:";
$name = prompt($prompt_msg);
$recipients = array("xxx@yyy.cz",$name,"yyy@xxx.com");
$to = implode(',', $recipients);
echo($to);
.
.
.
.
mail($to,$subject,$message,$headers);

1 Ответ

0 голосов
/ 09 июня 2019

Я полагаю, вы пытаетесь сделать это через веб-браузер. То, что вы пытаетесь сделать, возможно, но не так, как вы к нему подходите.

PHP - это язык программирования, который работает на сервере, тогда как JavaScript - это язык программирования, который работает в браузере. Это важно понимать: это два совершенно разных языка программирования, которые работают на двух совершенно разных машинах. PHP не знает, что происходит в браузере пользователя, а браузер пользователя не знает, что происходит в PHP.

На самом деле, PHP даже не знает, что вы генерируете JavaScript. Что касается PHP, вы просто генерируете кучу текста и отправляете его пользователю. И JavaScript даже не запускается, пока PHP не перестанет работать.

В результате в вашем коде происходит строка "<script type='text/javascript'> document.write(answer); </script>", хранящаяся в $name, и вы немедленно пытаетесь отправить электронное письмо на эту строку. Все это происходит еще до того, как пользователю даже предлагают.

Вам необходимо кардинально изменить свой рабочий процесс на что-то вроде этого:

  1. Используйте PHP для генерации JavaScript, который будет запускать браузер пользователя.
  2. Используйте JavaScript в браузере пользователя, чтобы запросить у пользователя электронную почту.
  3. Пусть браузер пользователя отправит электронное письмо пользователя в PHP.
  4. Использование PHP для обработки предоставленной электронной почты в вызове mail().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...