用于发送空白电子邮件的php邮件功能,现在根本没有

时间:2015-08-20 18:19:36

标签: php forms email

对于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>  

1 个答案:

答案 0 :(得分:0)

我无法在您的代码中看到问题,导致此行为......您可以尝试更多内容:

  • 检查$success是否真的true *,e。 G。像那样: if ($success !== true) { die("Could not send mail. :("); }我会在$success = ...

  • 之后将这一行直接放在那一行之后
  • 启用错误报告(error_reporting(E_ALL); - 警告:不用于生产用途)并查看是否有所说明。将它作为第一行放在脚本之上。

  • 如果您有权访问,请检查您的邮件日志和服务器日志/ php日志
  • 无论如何,PHP的邮件功能相当简陋。在过去,我使用SwiftMailer扩展程序成功避免了某些客户端(如Outlook)中的空邮件等问题。也许,你应该试一试。

*如果成功为true,遗憾的是,这并不意味着您的邮件已正确发送,但该服务尝试发送您的邮件之后接受了该邮件。因此,PHP无法验证您的邮件是否已真正发送(和/或接收)。 :/

Fred -ii-是对的,如果某些字段(特别是email)是空的,那么事情可能会出错。

顺便说一句,&#34; Verdona&#34;应该是&#34; Verdana&#34;。 ;)