PHP форма — Проблема с ответным письмом электронной почты

#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.