Php表单没有将正确的电子邮件地址提取到from部分

时间:2013-08-20 18:01:26

标签: php

和我一起,这是我用PHP实现的第一种形式。我试图将用户的电子邮件地址拉入$ 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>'; 
  }
 }
?>

3 个答案:

答案 0 :(得分:0)

根据php.net http://php.net/manual/en/function.mail.php上的mail()文档,你应该在附加标题中添加From电子邮件地址,这是邮件中的第4个参数。例如:

$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:”,而不是实际的地址。这是你如何解决这个问题

<?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>'; 
  }
 }
?>

答案 1 :(得分:0)

试试这个:

$from = 'From: '.$email;

答案 2 :(得分:0)

你从一个变量$ from''From:';它只需要一个不包含电子邮件格式的字符串值。

试试这个

$from = $email;