PHP(邮件)联系表 - "reply to sender's email" 问题

PHP (Mail) Contact Form - "reply to sender's email" issue

抱歉,如果这看起来很愚蠢,但我的 PHP 知识接近“0”标记。我建立了一个网站,并根据需要使用了一个相当简单的 PHP 联系表格。但是我仍然有一些我无法真正解决的问题。

例如,当我收到电子邮件时,我希望能够回复发送电子邮件的人,基本上能够回复到 his/her 添加的电子邮件地址。现在 PHP 配置为包含我的服务器端电子邮件的 "from" 和 "to"。我将粘贴在代码下方。每当我尝试点击 "Reply" 时,我基本上都是在回复我的服务器端电子邮件地址。

有没有办法通过我在下面粘贴的代码来做到这一点?

另一个问题与 Gmail 有关。当我收到一封电子邮件时,所有内容都内联,所以我得到类似:"Name - Name, Surname - Surname, Email - Email, Message - Message" 的内容。我在服务器端电子邮件上设置了重定向,因此我也可以通过 gmail 地址获取电子邮件。但是,如果我通过网络邮件在服务器端查看电子邮件,格式正确,则每一行都在其单独的行中。

我可以在 Gmail 上实现吗?

这是我的 PHP 代码

<?php

// configure
$from = 'contact@mydomain.com';
$sendTo = 'contact@mydomain.com';
$subject = 'New message from contact form';
$fields = array('name' => 'Name', 'surname' => 'Surname', 'phone' => 'Phone', 'email' => 'Email', 'message' => 'Message'); // array variable name => Text to appear in the email
$okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!';
$errorMessage = 'There was an error while submitting the form. Please try again later';

// let's do the sending

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

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

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

    $headers = array('Content-Type: text/html; charset="UTF-8";',
        'From: ' . $from,
        'Reply-To: ' . $from,
        'Return-Path: ' . $from,
    );

    mail($sendTo, $subject, $emailText, implode("\n", $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'];
}

您应该使用 hard-coded "From" 来接收用户的电子邮件并将其设置为 'from'。

我猜你的表单中有名称为 email 的电子邮件字段。所以从

'From: ' . $from,

'From: ' . $_POST['email'],

现在 header From: 应该包含提供的用户电子邮件。我认为您的代码很奇怪,但这可以解决您的问题。