PHP联系表单不会发送消息

时间:2014-09-11 21:21:50

标签: php forms email message contact

我似乎无法通过表单向我的电子邮件发送消息。是否可能是由于服务器?这是我的代码:

<?php
$action=$_REQUEST['action'];
if ($action=="")    /* display the contact form */
    {
    ?>
                <form id="contact-form" action:"" method="post" enctype="multipart/form-data">
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                        <input type="hidden" name="action" value="submit">
                            <label for="name">
                                Name</label>
                            <input type="text" class="form-control" id="name" placeholder="Enter name" required />
                        </div>
                        <div class="form-group">
                            <label for="email">
                                Email Address</label>
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span>
                                </span>
                                <input type="email" class="form-control" id="email" placeholder="Enter email" required /></div>
                        </div>
                        <div class="form-group">
                            <label for="subject">
                                Subject</label>
                            <select id="subject" name="subject" class="form-control" required="required">
                                <option value="na" selected="">Choose One:</option>
                                <option value="General">General</option>
                                <option value="Hiring">Hiring</option>
                                <option value="My Work">My Work</option>
                            </select>
                        </div>
                    </div>
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="message">
                                Message</label>
                            <textarea name="message" id="message" class="form-control" rows="9" cols="25" required
                                placeholder="Message"></textarea>
                        </div>
                    </div>
                    <div class="col-md-12">

                        <button type="submit" class="btn btn-skin pull-right" id="btnContactUs">
                            Send Message</button>
                    </div>
                </div>
                </form>
                  <?php
    } 
else                /* send the submitted data */
    {
    $name=$_REQUEST['name'];
    $email=$_REQUEST['email'];
    $subject=$_REQUEST['subject'];
    $message=$_REQUEST['message'];
    if (($name=="")||($email=="")||($subject=="")||($message==""))
        {
        echo "All fields are required.";
        }
    else{        
        $from="From: $name, $email";
        $subject="Message sent using your contact form";
        mail("nilsbittmannmyers@yahoo.co.uk", $subject, $message, $from);
        echo "Message sent!";
        }
    }  
?>

感谢:) 顺便说一句,我使用byet作为网络主机,我认为他们在免费服务中启用了PHP,对不起,我在编码方面有点像菜鸟,至少可以说是XD XD

1 个答案:

答案 0 :(得分:2)

您使用冒号action:""而不是等号,这应该是action="",这是代码中的主要问题。

您还缺少emailname输入字段的名称属性。

即:name="email"name="name"

此外,From:最初应该是电子邮件,而不是您在中的姓名 $from="From: $name, $email";

最好使用这样的东西:

$from = "From: ". $name . " <" . $email . ">\r\n";

作为标题的第4个参数。

这样,您就会收到一封正确的From电子邮件,并在电子邮件中显示该人的姓名。

使用$from="From: $name, $email";很可能最终会陷入垃圾邮件状态或完全被拒绝。

有关mail()和标题的详细信息,请访问PHP.net网站:

一些标题选项:

$headers .= 'Reply-To: ' . $from . "\r\n";
$headers .= 'Return-Path: ' . $from . "\r\n";
在您的情况下,

将是:

$from  = "From: ". $name . " <" . $email . ">\r\n";
$from .= 'Reply-To: ' . $email . "\r\n";
$from .= 'Return-Path: ' . $email . "\r\n";

<强> 旁注:

我注意到您正在使用enctype="multipart/form-data"

除非您想要附加/上传文件,否则您使用表单的内容并不是必需的,因此可以安全地将其删除。


<强> 脚注:

使用error reporting会发出这些错误信号,包括Undefined index...警告:

error_reporting(E_ALL);
ini_set('display_errors', 1);

位于开场<?php标记下方。