【问题标题】:PHP contact form wont send message [duplicate]PHP联系表格不会发送消息[重复]
【发布时间】:2014-09-11 21:21:50
【问题描述】:

我似乎无法获得向我的电子邮件发送消息的表单。可能是服务器的原因?这是我的代码:

<?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

【问题讨论】:

  • 您应该使用 mailchimp 或 postmarkapp 之类的服务来发送邮件。除此之外,您只传递 From: $name, $email 作为标题。这样做无疑会陷入垃圾邮件过滤器中,因为发送邮件的域可能与外发服务器不匹配。改为使用回复,并传递完整的邮件标题或使用 swiftmailer 为您完成。
  • mail() 不发送通常与周围代码无关,但与服务器配置有关。即使您提供了这方面的实际详细信息,这里也没有任何帮助。调查 PHPMailer/SwiftMailer 为typically advised
  • 另外,检查所有请求字段的 isset。查看 trim() 以及。在这里要做很多事情来清理整个事情。

标签: php forms email message contact


【解决方案1】:

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

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

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

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

最好使用这样的东西:

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

作为标题的第四个参数。

这样您将拥有一个正确的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);

放置在您打开的&lt;?php 标记下方。

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多