Php表单未将正确的电子邮件地址拉入“发件人”部分

Php表单未将正确的电子邮件地址拉入“发件人”部分,php,Php,我试图把用户的电子邮件地址拉到$from部分,但我没有任何运气。除了$from部分之外,所有的东西都正常工作,它没有提取所需的电子邮件地址。下面是我在收件箱中看到的示例 主题:OffPod 发件人:OffPod@p3nlhg757.shr.prod.phx3.secureserver.net(我希望本节将电子邮件拉到下面,即。mcginndaniel123@gmail.com) 日期:2013年8月20日星期二上午10:44 致:daniel@purplebottlemedia.com 发件人:

我试图把用户的电子邮件地址拉到$from部分,但我没有任何运气。除了$from部分之外,所有的东西都正常工作,它没有提取所需的电子邮件地址。下面是我在收件箱中看到的示例

主题:OffPod 发件人:OffPod@p3nlhg757.shr.prod.phx3.secureserver.net(我希望本节将电子邮件拉到下面,即。mcginndaniel123@gmail.com)
日期:2013年8月20日星期二上午10:44 致:daniel@purplebottlemedia.com

发件人:丹尼尔 电邮:mcginndaniel123@gmail.com 信息: 测试

这是我的密码:

<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $message = $_POST['message'];
 $from = 'From:';
 $to = 'daniel@purplebottlemedia.com'; 
 $subject = 'OffPod';

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

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

根据php.net上的mail()文档,您应该在附加标题中添加发件人电子邮件地址,这是mail中的第四个参数。例如:

$headers = 'From: webmaster@example.com' . "\r\n" .
  'Reply-To: webmaster@example.com' . "\r\n" .
  'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
您正在将$from变量放在附加标题的位置。您还只将$from变量设置为“from:”,而没有实际的from地址。下面是你如何解决这个问题的

<?php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $message = $_POST['message'];
 $to = 'daniel@purplebottlemedia.com';
 $headers = 'From: ' . $email . "\r\n" .
  'Reply-To: webmaster@example.com' . "\r\n" .
  'X-Mailer: PHP/' . phpversion(); 
 $subject = 'OffPod';

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

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

试试这个:

$from = 'From: '.$email;

您的变量为$from='from:';它只接受一个字符串值,不包含电子邮件格式

试试这个

$from = $email;

除了将
$from
设置为字符串外,您没有对其执行任何操作。
mail
的第四个参数是包含邮件标题的字符串;您可以使用它来替代现有的From标头。您当前正在传入字符串
From:
-尝试将
$name
连接到它:
'From:'$名称“\r\n”也就是说,有一些库可以帮助您创建电子邮件,而不必自己生成它们。看一看梨吧,比如:它的名字就是这样的。发件人:Daniel@p3nlhg758.shr.prod.phx3.secureserver.net如何在名称后添加电子邮件地址。我是否会在$name后面添加$email,比如$from='from:'$名字$电子邮件。“\r\n”;好的,我知道它工作得很好。现在是时候对垃圾邮件过滤器进行编码了。谢谢你的帮助!!