【问题标题】:PHP email wont send variablesPHP电子邮件不会发送变量
【发布时间】:2012-08-25 20:41:12
【问题描述】:

基本上下面的代码是一个查询表单,当网站用户填写时,它会将电子邮件发送到我的电子邮件地址。但是有些东西不起作用...

这是 php:

<?php
$field_name = $_POST['efName'];
$field_email = $_POST['efEmail'];
$field_phone = $_POST['efPhone'];
$field_date = $_POST['efTravelDate'];
$field_duration = $_POST['efLengthOfStay'];
$field_otherInfo = $_POST['efOtherInfo'];

$mail_to = 'James_Burnside94@hotmail.com';
$subject = 'Enquiry Applicant-'.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Phone: '.$field_phone."\n";
$body_message .= 'Date: '.$field_date."\n";
$body_message .= 'Duration: '.$field_duration."\n";
$body_message .= 'otherInfo: '.$field_otherInfo."\n";

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

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Enquiry Sent.');
        window.location = 'index.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Enquiry form failed to send. \n Please try again, or send an email             to enquiry@cannes-rental-apartment.com');
        window.location = 'index.html';
    </script>
<?php
}
?>

这是 Html 正文:

<body>


<fieldset style="display:block; width:500px;">
    <form action="enquiry.php" method="post">
    <table> 
                <tr> <td> <span class="enquiryFormHeader"> Enquiry Form     </span> <p>         </p></td> </tr>
            <tr> <td> Name: </td> <td> <input type="text" name="efName"     id="efName"> </td> </tr>
            <tr> <td> Email: </td> <td> <input type="text" name="efEmail"     id="efEmail"> </td> </tr>
            <tr> <td> Phone or Moblie: </td> <td> <input type="text"     name="efPhone" id="efPhone"> </td> </tr>
            <tr> <td> Intended travel date: </td> <td> <input type="text"     name="efTravelDate" id="efTravelDate"> </td> </tr>
            <tr> <td> Intended length of stay: </td> <td> <input type="text"     name="efLengthOfStay" id="efLengthOfStay"> </td> </tr>
            <tr> <td valign="top"> Any other information:  </td> <td> <textarea     name="efOtherInfo" id="efOtherInfo"> </textarea> <p> </p> </td> </tr>
            <tr> <td><input type="submit" value="Send Form"     class="submitButton"> </td> </tr>
    </table>

    </form>
    </fieldset>


</body>

如果我这样做 $mail_status = mail($mail_to, 'subject', 'body_message', 'headers');

它完美地发送了一封基本的电子邮件。

在所有情况下都会出现“已发送查询”警报。

有人知道为什么它不起作用吗??

【问题讨论】:

  • 有错误吗?你真的得到 JS alert() 告诉你“查询发送失败”吗?
  • 您是否尝试过回显帖子数据以确保您得到预期的结果?我也相信“inquiry”是更常见的拼写,虽然 enquiry 没有错
  • 我是 php 新手,这是我创建的第一个网站,究竟在呼应什么?并且发送的查询总是出现:S
  • 建议:改用phpMailer class;普通的旧 mail() 函数并不是那么好。

标签: php html email


【解决方案1】:

运行var_dump(get_defined_vars()); 并确保它们已设置。还要检查/var/mail/user,其中user 是PHP 或Apache 用户,并查看更多操作系统级别引发的错误。

【讨论】:

  • 对不起,我不知道如何:S 我要插入 var_dump(get_defined_vars());进入php代码?
【解决方案2】:

1- 没错,你得到了什么?是空邮件还是根本没有邮件?

2- 尝试调试您的 $_POST,就像 user1593858 说的那样。在 php 开始标签之后添加:

echo "<pre>";
print_r($_POST);
echo "</pre>";

看看你的字段是否正确。

3- 你说如果你这样做:

$mail_status = mail($mail_to, 'subject', 'body_message', 'headers');

它有效;尝试用$subject 替换“主题”或用$body_message 替换“body_message”,直到找出问题为止。

【讨论】:

  • 我根本没有收到电子邮件:S 做回声 - 所有变量都得到正确的值,只有 $body_message 工作......另外两个都没有工作:S
猜你喜欢
  • 2011-08-02
  • 2014-05-30
  • 2011-09-16
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多