对于PHP来说,我是一个菜鸟,当涉及到html和css时,我几乎没有。我有一个简单的表格供潜在客户填写,点击发送,它应该给我发电子邮件。关于这个主题有很多方法,我用了几个来提出我的代码。最初我在获得电子邮件发送的意义上取得了有限的成功,但它并没有抓住任何变量(名字,电子邮件,电话等)。我收到了来自未知发件人的收件箱中的空白电子邮件。我修改了语法,以便开始抓取表单数据,但现在电子邮件永远不会到达。我知道它正在获取变量,因为在您点击发送后,数据会出现在"结果页面" (我已经删除了该功能,但没有做任何其他更改)。
我检查了我的垃圾邮件文件夹。 它发送到gmail地址,我知道gmail在提供可疑电子邮件方面是宽容的。 我已将我的php代码提交给http://phpcodechecker.com/,然后它又回来了。 托管我站点的服务器运行的是php 5.2和SMTP服务。
是否有人愿意查看我的代码并指出我哪里出错?
<?php
/* Variables */
$emailSubject = 'Quote request';
$webMaster = 'myaccount@gmail.com';
/* Data */
$email = $_POST['email'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$box = $_POST['box'];
$body = <<<EOD
<br><hr><br>
Email: $email <br>
Name: $name <br>
Phone: $phone <br>
Request: $box <br>
EOD;
$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$success = mail($webMaster, $emailSubject, $body, $headers);
/*Results*/
$Results = <<<EOD
<html>
<head>
<title>Email Sent!</title>
<style type ="text/css">
body {
background-color: #0252aa;
font-family: Verdona, Arial, Helvetica, sans-serif;
font-size: 14px;
color: white;
}
div {
padding-left: 50px; padding-top: 40px;
}
</style>
</head>
<div>
<div align="left">Thank you for your email.</div>
</div>
</body>
</html>
EOD;
echo "$Results";
?>
这是相关的html:
<form class="form" method="post" action="email2.php">
<p class="name">
<input type="text" name="name" id="name" placeholder="Luke Santos">
<label for="name">Name</label>
</p>
<p class="email">
<input type="email" name="email" id="email" placeholder="LukeSantos@example.com">
<label for="email">Email</label>
</p>
<p class="phone">
<input type="text" name="phone" id="phone" placeholder="(262) 555-1212">
<label for="phone">Phone</label>
</p>
<p class="box">
<textarea name="box" placeholder="What can we help you with?"></textarea>
</p>
<p class="submit">
<input type="submit" value="Send">
<input type="hidden" name="submitted" value="TRUE" />
</p>
</form>
答案 0 :(得分:0)
我无法在您的代码中看到问题,导致此行为......您可以尝试更多内容:
检查$success
是否真的true
*,e。 G。像那样:
if ($success !== true) { die("Could not send mail. :("); }
我会在$success = ...
启用错误报告(error_reporting(E_ALL);
- 警告:不用于生产用途)并查看是否有所说明。将它作为第一行放在脚本之上。
*如果成功为true
,遗憾的是,这并不意味着您的邮件已正确发送,但该服务尝试发送您的邮件之后接受了该邮件。因此,PHP无法验证您的邮件是否已真正发送(和/或接收)。 :/
Fred -ii-是对的,如果某些字段(特别是email
)是空的,那么事情可能会出错。
顺便说一句,&#34; Verdona&#34;应该是&#34; Verdana&#34;。 ;)