PHP 联系表 - 回复以获取提交者电子邮件

PHP Contact Form - make the Reply-To to have the submitter email

我在那里检查了不同的主题,但所有主题都不适用于我的代码。我需要能够通过我的电子邮件直接回复提交者的电子邮件。这是我的代码:

    <?php

// configure
$from = '<mymail@gmail.com>';
$sendTo = '<mymail@gmail.com>';
$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'];
}

我将不胜感激任何帮助。谢谢。

答案

Re-write 你的 foreach 是这样的:

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

然后添加 headers:

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

所以就发邮件吧。

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

其他答案(无视)

只需将 headers 设置为 "Reply-To"。

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

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

您将收到您用于提交邮件的电子邮件的任何回复。

编辑

使用此方法获取所需的电子邮件:

$sendTo = $fields['email'];

然后您就可以使用此变量发送电子邮件了。