php 邮件部分处理已发送电子邮件中的一堆代码

php mail partially working with bunch of code in sent email

上面的代码工作正常,但发送的电子邮件看起来有点奇怪。所有数据都在一个带有代码的变量下,这让我将信息与代码分开。请找到下面的图片。![在此处输入图片描述][1]

前言: 您作为代码发布的内容,我无法按照您所附的图片完全 重现。 请参阅我的脚注。

您写道:"but sent email looks little weird"。您将需要详细说明这一点以及您的 "sent" 部分所在的位置。

但是,根据我从您的脚本(测试时工作正常)可以看出,您在同一个文件中同时拥有 HTML 表单和 PHP 并且正在发送空数据一旦页面加载完毕;我肯定知道。

  • 在您的表单中看到 action="" 告诉我您将其用作单个文件,而不是指向第二个外部文件。

你有两个选择。

  • 要么将它们拆分为两个文件。
  • 使用条件语句包装整个可执行代码,例如 isset() 用于提交按钮 即:if(isset($_POST['submit_button'])){...}!empty() 用于输入。

    即:if(!empty($_POST['onward_date'])){...}

旁注:您放错了 </span> 标签,这会在网络浏览器的源代码中触发杂散标签警告(根据 Firefox)。

此外,您应该使用 type="submit" 而不是 type="button",因为这会产生两个按钮。至少,它在使用 Firefox 进行测试时有。

将其作为单独的文件使用,并以您的 PHP 作为 file_2.php 作为示例文件名:

<form action="file_2.php" method="post" id="booking_form">
<input type="radio" name="trip" id="one_way" value="one_way" checked="checked" /> ONE WAY
<input type="radio" name="trip" id="return" value="return"  /> RETURN
<br /><br />
<div id="first_line">
From: <input id="boarding" name="boarding" type="text" maxlength="40" class="user_input" size="18" value="New York" />
To: <input id="landing" name="landing" type="text" maxlength="40" class="user_input" size="18"  />
</div><br />
<div id="second_line">Onward: <input id="onward_date" name="onward_date" type="text" maxlength="40" class="user_input" size="18" />
<span id="hide">Return: <input id="return_date" name="return_date" type="text" maxlength="40" class="user_input" size="18"/></span></div><br />
<div id="third_line">Sur Name: <input id="sur_name" name="sur_name" type="text" maxlength="40" class="user_input" size="18" /></div><br />
<div id="four_line">Given Name: <input id="given_name" name="given_name" type="text" maxlength="40" class="user_input" size="18" /></div><br />
<div id="five_line">Contact Number: <input id="contact_number" name="contact_number" type="text" maxlength="40" class="user_input" size="18" /></div><br />
<div id="six_line">Email: <input id="email_id" name="email_id" type="text" maxlength="40" class="user_input" size="18" /></div><br />
<div id="seven_line"><input id="submit_button" name="submit_button" type="submit" value="Submit" /></div>
</form>

现在,您的 PHP 中 mail($to,$subject, $body, $headers) 缺少 semi-colon。

最好关闭它mail($to,$subject, $body, $headers);

如果要添加已发送的消息,请执行:

if(mail($to,$subject, $body, $headers)){

    echo "Message sent";
}

您可能还想在测试期间添加错误报告。

error reporting 添加到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告只能在试运行中进行,绝不能在生产中进行。


脚注:

但是,这里是邮件 headers 的(部分)示例,显示了 From: 和空消息:

From: <email@example.com>
Message-Id: <xxx>
Date: Thu, 30 Apr 2015 20:15:36 -0400
X-OutGoing-Spam-Status: No, score=-0.7
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - cloud.example.com
X-AntiAbuse: Original Domain - server.com
X-AntiAbuse: Originator/Caller UID/GID - [1234 56789] / [11 22]
X-AntiAbuse: Sender Address Domain - cloud.example.com

Sur Name: 
Given Name: 
Contact Number: 
Email: 
From: 
To: 
Onward Date: 
Return Date: