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'];
然后您就可以使用此变量发送电子邮件了。
我在那里检查了不同的主题,但所有主题都不适用于我的代码。我需要能够通过我的电子邮件直接回复提交者的电子邮件。这是我的代码:
<?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'];
然后您就可以使用此变量发送电子邮件了。