【问题标题】:PHP Contact Form Coming From Admin's Email来自管理员电子邮件的 PHP 联系表
【发布时间】:2015-08-21 03:41:40
【问题描述】:

我使用this tutorial 制作了一个 PHP 联系表单,效果很好,但我遇到了一个潜在的安全风险/不便。我收到的每封电子邮件都来自我的管理员登录名。

我按照this thread 的指示添加了$headers,但无济于事。

我目前的 PHP:

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    $from = $_POST['email']; 
    $to = 'myClientsEmail@gmail.com';
    $subject = 'Estimate Contact Form';

    $headers = "From: $email\r\n";                 /* I added this */
    $headers .= "Reply-To: $email\r\n";            /*     and this */

    $body = "From: $name\n Phone: $phone\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
        if (mail ($to, $subject, $body, $from, $headers)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        }
    }
?>

我到底错过了什么?任何帮助是极大的赞赏。谢谢!

【问题讨论】:

  • 你在说这个吗:$headers = "From: $email\r\n";
  • 是的,这就是我添加的内容,希望能更改电子邮件中的“发件人”
  • 你想要的是这个:$headers = '"From: The Name &lt;$email&gt;\r\n";
  • 这引发了一个错误Parse error: syntax error, unexpected '$body' (T_VARIABLE),在标头之后、if 语句之前引用了$body

标签: php


【解决方案1】:

您的mail() 函数调用有一个看起来像的额外参数。正确的mail() 调用应该是:

if (mail($to, $subject,$body,$headers)) {
  ....
}

所以只需删除$from 部分,它应该是好的。

【讨论】:

  • 感谢您的仓促回复!通过这些更改,电子邮件不再发送。我检查了收件箱和垃圾邮件。我还把它恢复到原来的样子,它又出现了(只是为了确保它不是系统)
  • 你必须开始做一些调试。 1) 将mail() 调用分配给一个变量。 var_dump() 那个变量。 2) 检查服务器上的 SMTP 设置。它可能会拒绝来自与管理员用户名不同的域/用户组合的邮件。
  • 不是 100% 确定我是否正确,但最终结果是“您的消息已发送!” “布尔(真)”。我将$mail = mail($to, $subject, $body, $headers); 放在我的if 语句中$mail,然后在if else 语句之后做了var_dump($mail)。对吗?
  • 邮件没有到达那里:/
  • 然后检查您服务器上的 SMTP 设置,或您要发送到的邮件的接受设置。在这一点上,这可能是 SO 的另一个问题,因为对 SMTP 设置进行故障排除存在许多潜在问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2012-11-10
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 2014-06-09
  • 2012-08-10
相关资源
最近更新 更多