2017-01-14 1 views
1

J'ai inspecté différents sujets, mais tous ne fonctionnent pas avec mon code. J'ai besoin d'avoir la possibilité de répondre directement aux e-mails de soumission via mon email. Voici mon code:Formulaire de contact PHP - faire la réponse pour avoir l'email de l'auteur

<?php 

// configure 
$from = '<[email protected]>'; 
$sendTo = '<[email protected]>'; 
$subject = 'New message from PROMO form'; 
$fields = array('name' => 'Name', 'city' => 'City', 'tel' => 'Tel', 'email' => 'Email', 'message' => 'Message', 'age' => 'Age', 'info' => 'Info', 'checkboxtwo' => 'Checkboxtwo'); // array variable name 
$okMessage = 'Спасибо.'; 
$errorMessage = 'Извините, ошибка.'; 
$headers = 'From: ' . $fields['email'] . "\r\n" . 'Reply-To: ' . $fields['email']; 

try 
{ 
    $emailText = "You have new message from online form form\n=============================\n"; 

    foreach ($_POST as $key => $value) { 

     if (isset($fields[$key])) { 
      $emailText .= "$fields[$key]: $value\n"; 
     } 
    } 

    mail($sendTo, $subject, $emailText, $headers); 

    $responseArray = array('type' => 'success', 'message' => $okMessage); 
} 
catch (\Exception $e) 
{ 
    $responseArray = array('type' => 'danger', 'message' => $errorMessage); 
} 

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    $encoded = json_encode($responseArray); 

    header('Content-Type: application/json'); 

    echo $encoded; 
} 
else { 
    echo $responseArray['message']; 
} 

J'apprécie hautement toute aide. Je vous remercie.

Répondre

1

LA RÉPONSE

Récrire votre foreach comme ceci:

foreach ($_POST as $key => $value) { 
     if (isset($fields[$key])) { 
      $emailText .= "$fields[$key]: $value\n"; 
      $fields[$key] = $value; //It set the values on the array 
     } 
} 

Puis ajouter les en-têtes:

$headers = 'From: ' . $fields['email'] . "\r\n" . 'Reply-To: ' . $fields['email']; 

Donc il suffit d'envoyer le courrier.

mail($sendTo, $subject, $emailText, $headers); 

Autres réponses (les ignorer)

Il suffit de régler les en-têtes avec le "Reply-To".

$headers = 'From: ' . $from . "\r\n" . 'Reply-To: ' . $from; 

mail($sendTo, $subject, $emailText, $headers); 

Vous obtiendrez des réponses à l'e-mail que vous avez utilisé pour envoyer le message.

EDIT

Obtenez le courriel désiré en utilisant ceci:

$sendTo = $fields['email']; 

Ensuite, vous serez en mesure d'envoyer l'e-mail en utilisant ce var.

+0

Nous vous remercions de votre réponse. Je n'ai pas besoin de répondre à $ from - c'est mon email. Je dois avoir la possibilité de répondre à l'email qui est un élément de ce tableau - $ fields = array ('name' => 'Name', 'city' => 'City', 'tel' => 'Tel', 'email' => 'Email', 'message' => 'Message', 'age' => 'Age', 'info' => 'Info', 'checkboxtwo' => 'Checkboxtwo'); – Horizontt

+0

Donc, vous voulez envoyer un message à envoyer par courriel dans le tableau, non? –

+0

Oui, exactement cet e-mail provient de l'émetteur. – Horizontt