为什么我的PHP电子邮件表单发送空白电子邮件

时间:2020-09-18 15:06:15

标签: php html email

让我先解释一下我的问题。

我有一份自由职业,当时我正在为一家商业公司设计和开发一个网站。我编写了电子邮件表单,并将其附加到PHP发送表单,它会收集填写该表单的任何人的姓名,电话,电子邮件,主题和消息,然后将其发送给企业所有者。

最近,所有者一直抱怨收到空白电子邮件,并认为他们丢失了业务。我回到了PHP代码并添加了一个验证系统,甚至添加了重定向,如果提交正确,它将重定向到包含2个页面选项“很抱歉出现问题”或“谢谢您发送电子邮件”

我也进入了HTML并修复了该问题,并添加了“必填字段”,因此在没有填写任何内容的情况下绝对无法发送电子邮件。

有人可以解释一种肯定的方式来解释它吗,因为所有者仍在抱怨收到空白电子邮件...

这是HTML联系人表格文件

    <form method="post" action="acknowledge.php"  role="form" class="php-email-form">
      <div class="form-row section-bg">
        <div class="col-md-6 form-group">
          <input type="text" name="name" class="form-control" id="name" placeholder="Your Full Name" data-rule="minlen:4" data-msg="Please enter a valid Full Name" required/>
          <div class="validate"></div>
        </div>
        <div class="col-md-6 form-group">
          <input type="text" class="form-control" name="cname" id="cname" placeholder="Company Name" data-rule="minlen:4" data-msg="Please enter a valid Company Name" required/>
          <div class="validate"></div>
        </div>
        <div class="col-md-6 form-group">
          <input type="text" class="form-control" name="tel" id="tel" placeholder="Telephone" data-rule="minlen:4" data-msg="Please enter a valid Phone Number" required/>
          <div class="validate"></div>
        </div>
        <div class="col-md-6 form-group">
          <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid Email" required/>
          <div class="validate"></div>
        </div>
      </div>
      <div class="form-group section-bg">
        <textarea class="form-control" name="message" id="message" rows="5" data-rule="required" placeholder="Message"  required></textarea>
      </div>
      <input type="submit" class="form-control" name="send" value="Send Message"/>
    </form>

这是PHP电子邮件文件

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

if (isset($_POST['send'])) {
     $to = 'Owners Email';
     $subject = 'Business Inquiries';
     $name = 'Full Name: ' . $_POST['name'] . "\r\n\r\n";
     $cname = 'Company Name: ' . $_POST['cname'] . "\r\n\r\n";
     $tel = 'Telephone Number: ' . $_POST['tel'] . "\r\n\r\n";
     $emails = 'Email: ' . $_POST['email'] . "\r\n\r\n";
     $message = 'Message: ' . $_POST['message'];
     
     $email_from = 'Owners business website name';
    
     $email_body = "$name\n $cname\n $emails\n $tel\n $message\n";

     $headers = "From: $email_from \r\n";
     $headers .= 'Content-Type: text/plain; charset=utf-8';
    
     $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
     if($email) {
         $headers .= "\r\nReply-To: $emails";
     }


     $success = mail($to, $subject, $email_body, $headers);
}

?>
<body>
<?php if (isset($success) && $success) { ?>
<h1>Thank You!</h1>
Your Message has been sent!
<?php } else { ?>
<h1>Oops!</h1>
Sorry, there was a problem sending your message. Please Try Again.
<?php } ?>
</body>

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您必须检查所有需要设置的字段,例如,可以选择检查每个要设置的字段。

   <?php
   
   $name = filter_input (INPUT_POST, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
   $cname = filter_input (INPUT_POST, 'cname', FILTER_SANITIZE_SPECIAL_CHARS);
   $tel = filter_input (INPUT_POST, 'tel', FILTER_SANITIZE_NUMBER_INT);
   $message = filter_input (INPUT_POST, 'message', FILTER_SANITIZE_SPECIAL_CHARS);
   $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

   if (!empty($name) && !empty($cname) && !empty($tel) && !empty($message) ) {
        $to = 'Owners Email';
        $subject = 'Business Inquiries';
        $name = 'Full Name: ' . $name . "\r\n\r\n";
        $cname = 'Company Name: ' . $cname . "\r\n\r\n";
        $tel = 'Telephone Number: ' . $tel . "\r\n\r\n";
        $emails = 'Email: ' . $email . "\r\n\r\n";
        $message = 'Message: ' . $message;
        
        $email_from = 'Owners business website name';
       
        $email_body = "$name\n $cname\n $emails\n $tel\n $message\n";
   
        $headers = "From: $email_from \r\n";
        $headers .= 'Content-Type: text/plain; charset=utf-8';
       
        
        if($email) {
            $headers .= "\r\nReply-To: $emails";
        }
   
   
        $success = mail($to, $subject, $email_body, $headers);
   }
   
   ?>
相关问题