【问题标题】:Mailto form does not include sender's emailMailto 表格不包括发件人的电子邮件
【发布时间】:2017-07-18 17:16:04
【问题描述】:

当发件人填写我的表单的 cmets 框时,我可以收到消息, 我可以看到发件人的姓名。但是,我无法回复电子邮件 因为电子邮件地址是空白的。

php如下:

<?php

$name=$_POST['name'];
$telephone=$_POST['telephone'];
$email=$_POST['email'];
$date=$_POST['date'];
$location=$_POST['location'];
$comments=$_POST['comments'];
$to="info@hsphotography.co.uk";
$subject="new mesage";

mail($to,$subject,$comments,"From:".$name);
echo "Your message has been sent. Thank you for your enquiry";

?>

【问题讨论】:

  • 注意来自php docs的警告“additional_headers没有邮件头注入保护。因此,用户必须确保指定的头是安全的并且只包含头。即不要通过放置多个换行符来启动邮件正文。”请参阅此question/answer 了解更多信息

标签: php


【解决方案1】:

mail() 函数的第四个参数接受了额外的标头。例如:

$headers = 'From: ' . $email . "\r\n" . 'Reply-To: ' . $email . "\r\n";

mail($to, $subject, $comments, $headers);

您需要Reply-To 标头。

【讨论】:

    【解决方案2】:

    现在,您将 $name 变量放在应该放置发件人电子邮件地址 ($email) 的字段中。您可以同时使用两者,但不幸的是,您需要将它们一起破解,因为 PHP 邮件功能不适合您。

    您可以像这样添加两者:

    mail($to, $subject, $comments, 'From: "' . $name . '" <' . $email . '>')
    

    注意,您需要在字符串中包含双引号字符,这可能有点冒险,但您可以使用' 来避免变得更复杂。

    如果$name 是“Bob”并且$email 是“bob@test.test”,那么所有这些应该看起来像:'From: "Bob" &lt;bob@test.test&gt;'。另请参阅this question on how to format email headers

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 1970-01-01
      • 2016-03-15
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2012-04-21
      相关资源
      最近更新 更多