无法通过XAMPP中的PHP webform将消息转发到我的收件箱


Cannot forward the message to my inbox via PHP webform in XAMPP

我创建了一个WEB表单,它应该将想要联系我的人的消息转发到我的GMAIL收件箱中。它应该是简单的:访问我的网站,想要联系我的人只应该填写他们的姓名,电子邮件和消息,并点击提交按钮,应该将消息转发到我的gmail地址。然而,这并没有发生,我也不知道为什么。我试着通过XAMPP测试,但我的收件箱里从来没有收到任何东西。

实际上,我总是收到消息:SMTP ERROR: COULD NOT CONNECT TO SMTP HOST.

我仍然是新的网页设计和PHP,所以这可能是一个基本的问题,你。我试着解决这个问题了几天,在一些论坛上寻求帮助,但仍然找不到解决方案。

我下载了XAMPP 1.8.1。解压到C:'xampp文件夹。

然后我启动Apache服务器并通过localhost/email/newnews .php请求我的php文件

我简单地填写了网页表单,点击提交按钮,然后我收到消息:SMTP错误:COULD NOT CONNECT TO SMTP HOST。

下面是我的PHP代码:
<?php
require_once 'PHPMailer/class.phpmailer.php';
// form url sanitizing
$php_self = filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// variable initializing
$name    = '';
$email   = '';
$message = '';
$errors  = array();
// is form send?
if( isset( $_POST['submit'] ) ) {
   // validate $_POST['name']
   $name = filter_input( INPUT_POST, 'name', FILTER_SANITIZE_STRING );
   if( '' == $name ) {
      $errors[] = 'Please enter a valid name';
   }
   // validate $_POST['email']
   $email = filter_input( INPUT_POST, 'email', FILTER_SANITIZE_EMAIL );
   if( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
      $errors[] = 'Please enter a valid email';
   }
   // validate $_POST['message']
   $message = filter_input( INPUT_POST, 'message', FILTER_SANITIZE_STRING );
   if( '' == $message ) {
      $errors[] = 'Please enter a valid message';
   }
   // If no errors
   if( empty( $errors ) ) {
      //values are valid, lets send an email
      $mail = new PHPMailer();
      // base parameters. working for me
      $mail->IsSMTP(); // use SMTP
      $mail->Host       = "smtp.gmail.com"; // GMail
      $mail->Port       = 567; // I tried 465 but with no success
      $mail->SMTPSecure = "ssl";
      $mail->SMTPAuth   = true; // turn on SMTP authentication
      // adjust these lines
      $mail->Username   = "mymail@gmail.com";
      $mail->Password   = "mypassword";
      $mail->SetFrom($email, $name);
      $mail->AddAddress('myothermail@gmail.com', 'MyName');
      $mail->Subject    = "Feedback Form Results";
      $mail->Body       = $message;
      // sending
      if(!$mail->Send()) {
         // first error message is just for debugging. This don't generate messages a user should read
         // comment this and uncommend the second message for a more user friendly message
         $errors[] = "Mailer Error: " . $mail->ErrorInfo;
         //$errors[] = "email couldn't be send";
         // Output Sanitizing for repopulating form
         $name    = filter_var( $name,    FILTER_SANITIZE_FULL_SPECIAL_CHARS );
         $email   = filter_var( $email,   FILTER_SANITIZE_FULL_SPECIAL_CHARS );
         $message = filter_var( $message, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
      } else {
         // maybe you should generate/fill a success message here
         // clear fields
         $name    = '';
         $email   = '';
         $message = '';
      }
   }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="utf-8">
   <title>self referencing form</title>
   <link rel='stylesheet' href='http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css'/>
   <link rel="stylesheet" href="main.css">
</head>
<body>
   <div id="button" class="title">
      <h6>Contact</h6>
   </div>
   <div id="dropbox">
      <header class="title">
         <h6>Whats up?</h6>
      </header>
   <?php if(!empty($errors)): ?>
      <ul class="error">
         <li><?php echo join('</li><li>', $errors); ?></li>
      </ul>
   <?php endif; ?>
      <div class="contact-form">
         <form action="<?php echo $php_self; ?>" method="post">
            <!-- input element for the name -->
            <h6><img src="img/person.png" alt=""> Name</h6>
            <input type="text"
                   name="name"
                   value="<?php echo $name; ?>"
                   placeholder="Please enter your full name here"
                   required>
            <!-- input element for the email -->
            <h6><img src="img/email.png" alt=""> E-mail</h6>
            <input type="email"
                   name="email"
                   value="<?php echo $email; ?>"
                   placeholder="Please enter your e-mail address"
                   required>
            <!-- input element for the message -->
            <h6><img src="img/message.png" alt=""> Message</h6>
            <textarea  name="message" placeholder="Type your message..." required><?php echo $message; ?></textarea>
            <!-- input element for the submit button -->
            <input name="submit" type="submit" value="Submit">
         </form>
      </div>
   </div>
<script src='http://code.jquery.com/jquery-1.9.1.min.js'></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
<script src='dropbox.js'></script>
</body>
</html>
下面是我的CSS代码:
@import url("reset.css");
#button {
    position: absolute;
    top: 0;
    right: 10%;
    color: #eee;
    z-index: 2;
    width: 175px;
    background: #c20000;
    text-align: center;
    height: 40px;
    -webkit-border-radius: 0px 0px 2x 2px;
    border-radius: 0px 0px 2px 2px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 1em;
    text-transform: uppercase;
}
#button:hover {
    background: #da0000;
    cursor: pointer;
}
#button > h6{
    line-height: 40px;
    margin: 0px;
    padding-top: 0px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 0.8em;
    text-transform: uppercase;
}
#dropbox {
    position: absolute;
    top: 0px;
    right: 10%;
    color: #eee;
    z-index: 1;
    background: #222222;
    width: 350px;
    display: none;
    -webkit-box-shadow: 0px 0px 16px rgba(50, 50, 50, 0.75);
    -moz-box-shadow: 0px 0px 16px rgba(50, 50, 50, 0.75);
    box-shadow: 0px 0px 16px rgba(50, 50, 50, 0.75);
}
#dropbox .title {
    height: 40px;
    background: #414141;
}
#dropbox .title > h6{
    line-height: 40px;
    padding-left: 58px;
    margin-top: 0px;
}
#dropbox {
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 1em;
    text-transform: uppercase;
}
#dropbox .contact-form {
    margin: 10px;
}
#dropbox .contact-form h6{
    margin: 5px;
}
#dropbox input {
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 0.9em;
    outline: none;
    border: none;
    width: 320px;
    max-width: 330px;
    padding: 5px;
    margin: 10px 0px;
    background: #444444;
    color: #eee;
}
#dropbox textarea {
    height: 70px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 0.9em;
    outline: none;
    border: none;
    width: 320px;
    max-width: 320px;
    padding: 5px;
    margin: 10px 0px;
    background: #444444;
    color: #eee;
}
#dropbox input[type=submit] {
    margin: 0px;
    width: 330px;
    cursor: pointer;
    color: #999;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 0.8em;
    text-transform: uppercase;
    font-weight: bold;
}
#dropbox input[type=submit]:hover {
    color: #eee;
    background: #c20000;
}
这是我的JQuery:
$(document).ready(function () {
    $('#button').mouseenter(function() {
        if($('#dropbox').is(':hidden')) {
            $('#dropbox').slideDown('fast', function() {
                // slidedown animation
            });
        } else {
            $('#dropdox').hide();
        } 
    });
    $('#dropbox').mouseleave(function() {
        $('#dropbox').slideUp('fast', function() {
            // slide back up
        });
    });
});

我下载PHP MAILER到C盘- xampp'htdocs'email',并创建了一个名为PHPMailer的新子文件夹。在这个文件夹中,我只是提取了下载的PHPMailer .zip归档文件的内容。

希望有人能帮助我,这样我就可以继续我的学习。提前感谢大家!

这是phpMailer的例子

主要区别在于$mail->Port=587;$mail->SMTPSecure='tls';

还要重新检查你的gmail登录,有时是简单的事情。