PHP(邮件)联系表 - “回复发件人的电子邮件”问题

时间:2017-02-25 16:20:53

标签: php forms email gmail contact

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

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

我可以通过下面粘贴的代码执行此操作吗?

另一个问题与Gmail有关。当我收到电子邮件时,所有内容都被内联,所以我得到类似的内容:“名称 - 姓名,姓氏 - 姓氏,电子邮件 - 电子邮件,消息 - 消息”。我有一个重定向放在服务器端的电子邮件,所以我也可以在Gmail地址上收到电子邮件。但是,如果我在服务器端查看电子邮件,通过webmail,格式正确,每行都在其单独的行上。

我可以在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'];
}

1 个答案:

答案 0 :(得分:1)

相反,使用硬编码的“发件人”,您应该会收到用户的电子邮件并将其设置为“发件人”。

我想在您的表单中,您有一个名为email的电子邮件字段。所以从

改变
'From: ' . $from,

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

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