2017-02-25 52 views
0

很抱歉,如果这看起来很愚蠢,但我的PHP知识接近“0”标记。我已经构建了一个网站,并根据需要使用了一个相当简单的PHP联系表单。不过,我仍然有一些问题,我无法真正解决。PHP(邮件)联系表 - “回复发件人的电子邮件”问题

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

有没有办法通过我粘贴的代码在下面?

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

我可以在Gmail上实现吗?

这里是不是使用硬编码“从”我的PHP代码

<?php 

// configure 
$from = '[email protected]'; 
$sendTo = '[email protected]'; 
$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']; 
} 
+0

行结束问题可能会通过将'\ n'更改为'\ r \ n'来解决。你可以在这里阅读更多关于它:http://stackoverflow.com/questions/1761051/difference-between-n-and-r –

+0

非常感谢答复,这很有用! :) – Robert

回答

1

您应该收到用户的电子邮件,并设置为“从”。

我想在你的表格中你有名字为email的电子邮件字段。所以从

'From: ' . $from, 

改变

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

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

+0

非常感谢!它像一个魅力。我将$ _POST ['email']添加到“Reply-To”,因为我希望能够在点击回复按钮时捕获发件人的电子邮件地址。我接受了你的回答,我会提高它的回报,但我没有足够的代表。 – Robert

相关问题