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