#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';
Это изменило имя отправителя.