#php #email #forms #contact #reply
#php #Адрес электронной почты #формы #Контакты #Ответить
Вопрос:
Контактная форма работает просто отлично, но я не могу понять, как настроить «ответное письмо». PHP-код выглядит следующим образом:
<?php
// Get Data
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
// Send Message
mail( "Message from $name",
"Name: $namenEmail: $emailnMessage: $messagen",
"From: $name <forms@example.net>" );
?>
То, что я пытался сделать, это заменить «forms@example.com » с помощью $ email, но по какой-то причине он выходит из строя и никогда ничего не отправляет.
Комментарии:
1. Когда он «вылетает», возникает ошибка?
2. Вероятно, сбой из-за того, что вы неправильно указали аргументы, чтобы
mail()
просмотреть документацию: us.php.net/manual/en/function.mail.php
Ответ №1:
Это просто Reply-to: reply@example.com
заголовок, которого вам не хватает в вашем блоке заголовков почты? Кроме того, похоже, что вам не хватает первого параметра mail()
функции, который должен быть адресом, на который она отправляется.
Добавьте Reply-to
заголовок в третий параметр, чтобы mail()
.
// Send Message
mail($to_address, "Message from $name",
// Message
"Name: $namenEmail: $emailnMessage: $messagen",
// Additional headers
"From: $name <forms@example.net>rnReply-to: reply@example.com"
);
РЕДАКТИРОВАТЬ Я пропустил запятую в вопросе и подумал, что весь блок — это сообщение, включая имя и от. Отредактировано выше. Я вижу, у вас уже был блок заголовка.
Комментарии:
1. Вы должны разделять заголовки с
rn
.2. Я внес изменения и заменил reply@example.com с помощью $ email, но он все еще отображается <forms@example.net > в поле ответа.
3. Пожалуйста, опубликуйте полные заголовки электронной почты из полученного сообщения. Еще лучше, опубликуйте полные заголовки и тело сообщения.
4. О, моя ошибка, я не видел РЕДАКТИРОВАНИЕ. Я попробую еще раз и дам вам знать.
5. Я вернусь через полчаса или еще через несколько. Этот последний тест сработал, но испортил страницу.
Ответ №2:
Вы не используете правильные параметры для функции mail. Взгляните на документацию
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
В вашем случае это было бы:
mail( $to,
$subject,
$message,
"From: $name <forms@example.net>" );
Предположим, что вы указали ему $ to (который обозначает, кому отправлять электронное письмо) и $ subject (тема электронного письма).
Ответ №3:
Возьмите этот фрагмент:
<?php
//define the receiver of the email
$to = 'youraddress@example.com';
//define the subject of the email
$subject = 'Test email';
//define the message to be sent. Each line should be separated with n
$message = "Hello World!nnThis is my first mail.";
//define the headers we want passed. Note that they are separated with rn
$headers = "From: webmaster@example.comrnReply-To: webmaster@example.com";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";
?>
В вашем коде вы пропустили первый аргумент, witch должно быть для who.