【问题标题】:Reply-To header not picking the php variable回复标头未选择 php 变量
【发布时间】:2013-08-20 02:49:23
【问题描述】:

我正在创建一个页面,该页面在邮件中发送来自联系表单的响应,但 reply-to 不起作用(我使用的变量具有值,但未添加到标题中)

这是我的代码:

<?php

//$uname=$_REQUEST['uname'];
if(isset($_REQUEST['name']))
{
    $name=$_REQUEST['name'];
}

if(isset($_REQUEST['email']))
{
    $email=$_REQUEST['email'];
}   

if(isset($_REQUEST['phone']))
{
    $phone=$_REQUEST['phone'];
}

if(isset($_REQUEST['message']))
{
    $message=$_REQUEST['message'];
}

// TESTING IF VARIABLES HAVE VALUES
echo "$name $email $phone $message";
// RESULT: TRUE TILL HERE


if($name=="" || $email=="" || $phone=="" || $message=="")
{
    header("location:../?inst=invalid");    
}
else
{

    // ---------------- SEND MAIL FORM ----------------

// send e-mail to ...
$to="mail@example.com";

// Your subject
$subject="$name Contacted you via Contact Form";

// From
$headers  = "From: ME <no-reply@example.com>\r\n";
$headers .= 'Reply-To:' . $email . "\r\n";
$headers .= "Return-Path: info@example.com\r\n";
$headers .= "X-Mailer: PHP\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

print $message;
// send email
$sentmail = mail($to,$subject,$message,$headers);
//$sentmail = mail($to1,$subject,$message,$header);
}

// if your email succesfully sent
if($sentmail){
echo "Mail Sent.";
}
else {
    header("location:../landing/?status=verification-pending");
    }

?>

现在,当我在我的 gmail 中检查标题时,$email 的值不会出现在标题信息中,也没有收到任何消息。我得到的只是一条空白消息,或者可能是 $message 没有打印任何类似于我在回复时遇到的情况。

请帮帮我。提前致谢。

【问题讨论】:

  • 这不会解决您的问题,但您可以避免使用所有这些 if isset,只需使用 if(isset($_POST['submit'])) 并将您的提交按钮命名为“提交”并将您的变量放在其下方。跨度>
  • 我认为在您开始向输出写入内容后,您无法为标题设置任何内容。而您的 echo 确实会写入输出。所以把标题设置放在前面。
  • 哦好主意@Fred-ii-我会用它
  • 您的回复行在冒号和电子邮件地址的开头之间缺少一个空格。
  • @SaurabhSharma Plus,它甚至可以部分解决您的问题。你甚至可以使用这个 sn-p 来获取你所有的 POST 值 => foreach ($_POST as $key=&gt;$value) { $message.=$key.": " . $value . "\n"; }

标签: email header php


【解决方案1】:

检查您是否启用了 php 警告和通知。当您回显 $name、$email 等时,您正在使用标头进行重定向。如果您的 php 通知等未打开,您的标头重定向将由于已经回显某些内容而失败,并且您不会知道您的输入无效。这是您不应该在逻辑过程中回显某些内容,而是应该稍后存储和输出值的部分原因。

【讨论】:

  • 是的@Zak 我知道,我只是用它来测试:)
【解决方案2】:

其实上面的代码有一点小错误。我在比较时错误地添加了= 而不是==

这一行:

if($name=="" || $email="" || $phone="" || $message="")

应该读作:

if($name=="" || $email=="" || $phone=="" || $message=="")

因为= 是用于等式而不是比较条件==

在问题中修复了它

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 2012-02-27
    • 2020-12-20
    • 2014-08-25
    • 1970-01-01
    • 2014-12-11
    • 2011-08-12
    • 2012-10-26
    相关资源
    最近更新 更多