Почему моя отправленная почта получает имя в этом формате?

#php

#php

Вопрос:

Привет, у меня проблема с использованием функции mail в php. Я получаю электронное письмо на свой example@gmail.com но имя отправителя выглядит примерно так: uid86787

Полное электронное письмо, которое я получу, выглядит так:

 uid86787
Subject: Some subject
To: myEmail@gmail.com
---------------------------
Body of email
Name: exampleName (I entered in form)
Email: exampleEmail (I entered in form)
Message: exampleMessage (I entered in form)
From: myPage.eu
 

Что мне нужно, так это изменить имя uid86787 на myPage.eu . Как я могу это сделать, пожалуйста?

 <?php
   $errors = array();
   $errorMessage = '';

   if (!empty($_POST)) {
       $name = $_POST['name'];
       $email = $_POST['email'];
       $message = $_POST['message'];

       if (empty($name)) {
           $errors[] = 'Meno je prázdne';
       }

       if (strlen($name) < 3) {
           $errors[] = 'invalid name';
       }


       if (empty($email)) {
           $errors[] = 'Email is empty';
       } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
           $errors[] = 'Email is invalid';
       }

       if (empty($message)) {
           $errors[] = 'Message is empty';
       }


       if (empty($errors)) {
           $toEmail = 'example@gmail.com';
           $emailSubject = 'Správa cez stránku page.example';
           $headers = serialize(array('From' => $email, 'Reply-To' => $email, 'Content-type' => 'text/html; charset=iso-8859-1'));



           $bodyParagraphs = array("Name: {$name}", "Email: {$email}", "Message:", $message, "From: mypage.eu}");
           $body = join(PHP_EOL, $bodyParagraphs);

           if (mail($toEmail, $emailSubject, $body, $headers)) {
              $errorMessage = "<p style='color: green;'>{Email sended}</p>";
           } else {
               $errorMessage = 'Oops, something went wrong. Please try again later';
           }
       } else {
           $allErrors = join('<br/>', $errors);
           $errorMessage = "<p style='color: red;'>{$allErrors}</p>";
       }
   }
  ?>

 

Редактировать:
Почему у меня есть заголовки в serialize()
Ответ: живой сервер работает на более старом php, я думаю, и он выдает мне ошибку:

 mail() function required 4th parameter as string
 

Перед сериализацией у меня было так

 $headers = ['From' => $email, 'Reply-To' => $email, 'Content-type' => 'text/html; charset=iso-8859-1'];
 

Комментарии:

1. Зачем вам serialize() ваши заголовки?

2. сервер bcs работает на более старом php, и он выдает мне ошибку, подобную этой:

3. Ошибка функции mail() требуется 4-й параметр в виде строки

4. Что это за версия PHP? Должно быть, он не поддерживался много лет. Время для обновления

Ответ №1:

Не serialize() ваши заголовки. Чтобы сделать ваши заголовки строкой, измените

 $headers = serialize(array('From' => $email, 'Reply-To' => $email, 'Content-type' => 'text/html; charset=iso-8859-1'));
 

Для

 $headers = "From: $email" . "rn" . 
"Reply-To: $email" . "rn" . 
'Content-type: text/html; charset=iso-8859-1';
 

Смотрите примеры в руководстве по PHP mail.

Комментарии:

1. после изменения этого письма не было отправлено

2. Оно не было отправлено или не пришло? Вы проверили свою папку нежелательной почты? Вы получаете какие-либо ошибки? Белая страница?

3. нет ошибок, электронное письмо не получено, нет нежелательных писем, нет белой страницы

Ответ №2:

 $headers = 'From: info@vrtaniestudni.eu';

 

Это изменило имя отправителя.