嗨,我正在尝试确定为什么无法发送此联系表已经在服务器上,当我按“发送消息”后,一切都没有通过

问题描述

联系方式未发送。如果有人知道我在做什么错,我将不胜感激。该网站已经启用,我在PHP中使用了正确的电子邮件地址。不确定100是否有任何信息会进入HTML联系人表格的顶部。

谢谢

HTML代码:

  <div class="row">
    <div class="col-12">
      <br>
      <h2 class="contact-title">Get in Touch</h2>
    </div>
    <div class="col-lg-8">
      <form class="form-contact contact_form" action="contact_process.php" method="post" id="contactForm"
        novalidate="novalidate">
        <div class="row">
          <div class="col-12">
            <div class="form-group">

              <textarea class="form-control w-100" name="message" id="message" cols="30" rows="9"
                onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter Message'"
                placeholder='Enter Message'></textarea>
            </div>
          </div>
          <div class="col-sm-6">
            <div class="form-group">
              <input class="form-control" name="name" id="name" type="text" onfocus="this.placeholder = ''"
                onblur="this.placeholder = 'Enter your name'" placeholder='Enter your name'>
            </div>
          </div>
          <div class="col-sm-6">
            <div class="form-group">
              <input class="form-control" name="email" id="email" type="email" onfocus="this.placeholder = ''"
                onblur="this.placeholder = 'Enter email address'" placeholder='Enter email address'>
            </div>
          </div>
          <div class="col-12">
            <div class="form-group">
              <input class="form-control" name="subject" id="subject" type="text" onfocus="this.placeholder = ''"
                onblur="this.placeholder = 'Enter Subject'" placeholder='Enter Subject'>
            </div>
          </div>
        </div>
        <div class="form-group mt-3">
          <a href="#" class="btn_3 button-contactForm" >Send Message</a>
        </div>
      </form>
    </div>

PHP代码:

    <?php

    $to = "i have used a correct email address";
    $from = $_REQUEST['email'];
    $name = $_REQUEST['name'];
    $subject = $_REQUEST['subject'];
    $number = $_REQUEST['number'];
    $cmessage = $_REQUEST['message'];

    $headers = "From: $from";
    $headers = "From: " . $from . "\r\n";
    $headers .= "Reply-To: ". $from . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    $subject = "You have a message from your Bitmap Photography.";

    $logo = 'img/logo.png';
    $link = '#';

    $body = "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>Express Mail</title> 
        </head><body>";
    $body .= "<table style='width: 100%;'>";
    $body .= "<thead style='text-align: center;'><tr><td style='border:none;' colspan='2'>";
    $body .= "<a href='{$link}'><img src='{$logo}' alt=''></a><br><br>";
    $body .= "</td></tr></thead><tbody><tr>";
    $body .= "<td style='border:none;'><strong>Name:</strong> {$name}</td>";
    $body .= "<td style='border:none;'><strong>Email:</strong> {$from}</td>";
    $body .= "</tr>";
    $body .= "<tr><td style='border:none;'><strong>Subject:</strong> {$csubject}</td></tr>";
    $body .= "<tr><td></td></tr>";
    $body .= "<tr><td colspan='2' style='border:none;'>{$cmessage}</td></tr>";
    $body .= "</tbody></table>";
    $body .= "</body></html>";

    $send = mail($to,$subject,$body,$headers);

?>

联系方式未发送。如果有人知道我在做什么错,我将不胜感激。该网站已经启用,我在PHP中使用了正确的电子邮件地址。不确定100是否有任何信息会进入html联系人表单的开头。

解决方法

您必须在代码中进行一些更改才能使邮件正常工作。首先,您必须更改按钮的代码。它必须像:<button type="submit"class="btn_3 button-contactForm">Send Message</button>,您还必须更改PHP文件中的代码以发送邮件,您必须删除$ send并使它像mail($to,$subject,$body,$headers);一样,还必须注意,并非全部托管公司支持mail()PHP函数。因此,请确保您的网络托管服务提供商支持mail()函数。如果您的托管服务不支持PHP mail()函数,则必须使用PHPMailer类。 PHPMailer使用SMTP并发送带有表单数据的邮件。您可以使用composer下载PHPMailer类。还有其他网站可以从中下载。解压缩下载的zip文件后,您会发现有一个名为PHPMailer的文件夹,其中包含许多其他PHP文件。您无需更改任何其他PHP文件。确保文件夹中存在autoload.php文件,因为autoload.php文件是获取并合并SMTP邮件的所有必要类的文件。之后,您必须将PHPMailer文件夹上载到服务器中的根目录(使用FTP进行共享托管,或者仅复制粘贴以使用专用服务器)。首先,您必须创建一个Gmail或任何邮件帐户,PHPMailer通过该帐户发送邮件。创建帐户后,转到帐户设置,并确保禁用两步身份验证。之后,还可以打开安全性较低的应用,您可以执行from here。 完成所有这些之后,您必须创建两个发送表单数据的PHP文件,第一个将是您如上所述的contact_process.php,该php文件的代码将是:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'phpmail/vendor/autoload.php';
if($_POST)
{
require('constant.php');
    
    $user_name      = filter_var($_POST["name"],FILTER_SANITIZE_STRING);
    $user_email     = filter_var($_POST["email"],FILTER_SANITIZE_EMAIL);
    $subject     = filter_var($_POST["subject"],FILTER_SANITIZE_STRING);
    $msg   = filter_var($_POST["msg"],FILTER_SANITIZE_STRING);


   $mail = new PHPMailer(true);  
    //   $mail->SMTPDebug = 0;                               
       $mail->isSMTP();
       $mail->SMTPAuth = true;    
       $mail->SMTPSecure = 'ssl';
       $mail->Port = 465;          
      $mail -> Host = HOST;  //this gets called from the constant.php
       $mail->Username = USERNAME;               
       $mail->Password = PASSWORD; 
       $mail->From = $user_email;
       $mail->FromName = $user_name;
       $mail->addAddress(RECIPIENT_MAIL,RECIPIENT_MAIL_NAME); //this gets called from the constant.php do not change this
       $mail->isHTML(true);
       $mail->Subject = $subject;
       $mail->Body = "New Response from website :\n\n<br>".    
                     "Name: $user_name\n\n<br>".       
                     "Email: $user_email \n\n<br>".    
                     "Subject: $subject \n\n<br>".       
                     "Message: \n\n <br>".    "$msg\n\n<br>"; 
        $mail->AltBody = "This is the plain text version of the email content";
        if (!$mail->send()) {
            echo json_encode(array('type'=>'error','text' => 'Try Again later')); //error sending form
             exit;
        } else {
            //mail sent successfully
            header("Location: thankyou.php");//change the link to the thank you page
                                     exit;
        }
}
?>

现在必须创建一个constant.php文件,其中必须配置收件人和发件人。的代码将是:

<?php
// SMTP Configuration
define('HOST',"ssl://smtp.gmail.com");
define('USERNAME',"sending-mail@gmail.com"); //mail address of gmail you created
define('PASSWORD',"password-of-sending-mail-acc"); //password of gmail you created

// Recipient Configuration
define('RECIPIENT_MAIL',"recipient@gmail.com"); //enter mail address you want the form data to get received
define('RECIPIENT_MAIL_NAME',"Website"); //name of recipient
?>

确保所有文件都在根目录中。您还可以将文件添加到其他目录,但必须更改文件的目录链接。

有关更多详细的文档和源代码,您可以see this.

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...