【问题标题】:Contact form isn't sending the message联系表格未发送消息
【发布时间】:2020-12-05 00:53:14
【问题描述】:

所以我正在为我的网站建立一个联系人,但由于某些原因,我收到了这个错误 [![错误图片][1]][1](https://prnt.sc/vw49gd - 链接到图片,因为上传的图片似乎没有得到它)​​

我的 HTML 表单相当简单:

<form class="nk-form-submit" action="form/contact.php" method="post">
    <div class="row">
        <div class="col-sm-6">
            <div class="field-item animated" data-animate="fadeInUp" data-delay="0.8">
                <label class="field-label textSubTittleColors ttu">Your Name</label>
                <div class="field-wrap">
                    <input name="contact-name" placeholder="First & Last Name" type="text" class="input-bordered contactUsTextfields required">
                </div>
            </div>
        </div>
        <div class="col-sm-6">
            <div class="field-item animated" data-animate="fadeInUp" data-delay="0.9">
                <label class="field-label textSubTittleColors ttu">Your Email</label>
                <div class="field-wrap">
                    <input name="contact-email" placeholder="example@gmail.com" type="email" class="input-bordered contactUsTextfields required email">
                </div>
            </div>
        </div>
    </div>
    <div class="field-item animated" data-animate="fadeInUp" data-delay="1.0">
        <label class="field-label textSubTittleColors ttu">Your Message</label>
        <div class="field-wrap ">
            <textarea name="contact-message" placeholder="Leave your question or comment here" class="input-bordered contactUsTextfields input-textarea required"></textarea>
        </div>
    </div>
    <input type="text" class="d-none" name="form-anti-honeypot" value="">
    <div class="row">
        <div class="col-sm-5 text-right animated" data-animate="fadeInUp" data-delay="1.1">
            <button type="submit" name="submit" class="btn sendButton"  >SEND</button>
        </div>
        <div class="col-sm-7 order-sm-first">
            <div class="form-results"></div>
        </div>
    </div>
</form>

但问题依赖于contact.php代码:

<?php
header('Content-type: application/json');
require_once('php-mailer/PHPMailerAutoload.php'); // Include PHPMailer

$mail = new PHPMailer();
$emailTO = $emailBCC =  $emailCC = array(); $formEmail = '';

### Enter Your Sitename 
$sitename = 'Organization';

### Enter your email addresses: @required
$emailTO[] = array( 'email' => 'myname@microsoftMail.org', 'name' => 'name' ); 

### Enable bellow parameters & update your BCC email if require.
//$emailBCC[] = array( 'email' => 'email@yoursite.com', 'name' => 'Your Name' );

### Enable bellow parameters & update your CC email if require.
//$emailCC[] = array( 'email' => 'email@yoursite.com', 'name' => 'Your Name' );

### Enter Email Subject
$subject = "Contact Us " . ' - ' . $sitename; 

### If your did not recive email after submit form please enable below line and must change to your correct domain name. eg. noreply@example.com
//$formEmail = 'noreply@yoursite.com';

### Success Messages
$msg_success = "We have <strong>successfully</strong> received your message. We'll get back to you soon.";

if( $_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST["contact-email"]) && $_POST["contact-email"] != '' && isset($_POST["contact-name"]) && $_POST["contact-name"] != '') {
        ### Form Fields
        $cf_email = $_POST["contact-email"];
        $cf_name = $_POST["contact-name"];
        $cf_message = isset($_POST["contact-message"]) ? $_POST["contact-message"] : '';

        $honeypot   = isset($_POST["form-anti-honeypot"]) ? $_POST["form-anti-honeypot"] : 'bot';
        $bodymsg = '';
        
        if ($honeypot == '' && !(empty($emailTO))) {
            ### If you want use SMTP 
            // $mail->isSMTP();
            // $mail->SMTPDebug = 0;
            // $mail->Host = 'smtp_host';
            // $mail->Port = 587;
            // $mail->SMTPAuth = true;
            // $mail->Username = 'smtp_username';
            // $mail->Password = 'smtp_password';

            ### Regular email configure
            $mail->IsHTML(true);
            $mail->CharSet = 'UTF-8';

            $mail->From = ($formEmail !='') ? $formEmail : $cf_email;
            $mail->FromName = $cf_name . ' - ' . $sitename;
            $mail->AddReplyTo($cf_email, $cf_name);
            $mail->Subject = $subject;
            
            foreach( $emailTO as $to ) {
                $mail->AddAddress( $to['email'] , $to['name'] );
            }
            
            ### if CC found
            if (!empty($emailCC)) {
                foreach( $emailCC as $cc ) {
                    $mail->AddCC( $cc['email'] , $cc['name'] );
                }
            }
            
            ### if BCC found
            if (!empty($emailBCC)) {
                foreach( $emailBCC as $bcc ) {
                    $mail->AddBCC( $bcc['email'] , $bcc['name'] );
                }               
            }

            ### Include Form Fields into Body Message
            $bodymsg .= isset($cf_name) ? "Contact Name: $cf_name<br><br>" : '';
            $bodymsg .= isset($cf_email) ? "Contact Email: $cf_email<br><br>" : '';
            $bodymsg .= isset($cf_message) ? "Message: $cf_message<br><br>" : '';
            $bodymsg .= $_SERVER['HTTP_REFERER'] ? '<br>---<br><br>This email was sent from: ' . $_SERVER['HTTP_REFERER'] : '';
            
            // Mailing
            $mail->MsgHTML( $bodymsg );
            $is_emailed = $mail->Send();

            if( $is_emailed === true ) {
                $response = array ('result' => "success", 'message' => $msg_success);
            } else {
                $response = array ('result' => "error", 'message' => $mail->ErrorInfo);
            }
            echo json_encode($response);
            
        } else {
            echo json_encode(array ('result' => "error", 'message' => "Bot <strong>Detected</strong>.! Clean yourself Botster.!"));
        }
    } else {
        echo json_encode(array ('result' => "error", 'message' => "Please <strong>Fill up</strong> all required fields and try again."));
    }
}

我已在 hostgator 域上上传此内容,但每次单击发送按钮时,我都会收到上述错误。

我还尝试了几个不同的代码,来自 stackoverflow 中的其他帖子或我看过的 youtube 视频,但结果都是一样的。 [1]:https://i.stack.imgur.com/MQQxS.png

【问题讨论】:

  • 查看这些设置,它们适用于 bluehost。 stackoverflow.com/questions/39731844/…
  • 我在您的代码中看不到任何图像。控制台中是否有任何错误消息?
  • @DCR 上传了一个链接
  • @DCR wthat bluehost,我可以附上我的 Outlook 电子邮件/密码吗?

标签: php html


【解决方案1】:

您可能使用了错误的 HTTP 请求类型。试试method 属性,如下所示。

method="get"

用于: 将您的 HTML 更改为:

<form class="nk-form-submit" action="form/contact.php" method="get">
                                        <div class="row">
                                            <div class="col-sm-6">
                                                <div class="field-item animated" data-animate="fadeInUp" data-delay="0.8">
                                                    <label class="field-label textSubTittleColors ttu">Your Name</label>
                                                    <div class="field-wrap">
                                                        <input name="contact-name" placeholder="First & Last Name" type="text" class="input-bordered contactUsTextfields required">
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="col-sm-6">
                                                <div class="field-item animated" data-animate="fadeInUp" data-delay="0.9">
                                                    <label class="field-label textSubTittleColors ttu">Your Email</label>
                                                    <div class="field-wrap">
                                                        <input name="contact-email" placeholder="example@gmail.com" type="email" class="input-bordered contactUsTextfields required email">
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="field-item animated" data-animate="fadeInUp" data-delay="1.0">
                                            <label class="field-label textSubTittleColors ttu">Your Message</label>
                                            <div class="field-wrap ">
                                                <textarea name="contact-message" placeholder="Leave your question or comment here" class="input-bordered contactUsTextfields input-textarea required"></textarea>
                                            </div>
                                        </div>
                                        <input type="text" class="d-none" name="form-anti-honeypot" value="">
                                        <div class="row">
                                            <div class="col-sm-5 text-right animated" data-animate="fadeInUp" data-delay="1.1">
                                                <button type="submit" name="submit" class="btn sendButton"  >SEND</button>
                                            </div>
                                            <div class="col-sm-7 order-sm-first">
                                                <div class="form-results"></div>
                                            </div>
                                        </div>
                                    </form>

【讨论】:

  • 我应该在哪里使用它?联系方式.php?
  • 我会在修订版中向您展示,并解释您的答案。
  • 它添加了问题“加载资源失败,服务器响应状态为 409”
  • 您是否将任何数据保存到您的服务器服务器端?
  • 根据Microsoft Power Automate Discussion表示数据有冲突,类似于你保存word文档的方式,但你不能,因为你在两个窗口中打开它,保存了一个版本的文件用蓝色字体,另一个用红色字体保存。
猜你喜欢
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多