代码之家  ›  专栏  ›  技术社区  ›  Ethannn

PHPmailer使用Gmail无法工作

  •  -1
  • Ethannn  · 技术社区  · 9 年前

    我想用gmail创建一个电子邮件表单,但无法正常工作。 我下载了PHPmailer并上传了它们。 该表单有效,它还会检查电子邮件地址是否正确,但在点击提交按钮后不会显示消息,也不会发送电子邮件。

    我还在gmail设置中打开了对不太安全的应用程序的访问。

        <?php
    
    // functie spamcheck
    function spamcheck($field)
      {
      //filter_var() sanitizes de email 
      $field=filter_var($field, FILTER_SANITIZE_EMAIL);
    
      //filter_var() valideert de email
      if(filter_var($field, FILTER_VALIDATE_EMAIL))
        {
        return true;
        }
      else
        {
        return false;
        }
      }
    
    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    {  
    
    
    // PHP mailer settings instellen voor GMAIL
    require_once ('contactform/phpmailer/class.phpmailer.php'); // het pad vanaf dit fomulier naar "class.phpmailer.php"
    $mail = new PHPMailer(true);
    $mail->CharSet = 'utf-8'; //character set utf-8 
    $mail->IsSMTP();  // smtp protocol gebruiken voor de email te verzenden 
    $mail->Host = "smtp.gmail.com"; // smtp servernaam van gmail
    $mail->Port = "587";  // smtp poort voor gmail 465 or 587
    $mail->SMTPSecure = "tls"; //gmail authenticeert door ssl ( andere optie is tls )
    $mail->SMTPAuth = true; 
    // account gegevens voor authenticatie Gmailserver
    $mail->Username = "ethannn@gmail.com"; 
    $mail->Password = "mypassword";
    $mail->From = $_POST['email']; 
    $mail->FromName = $_POST['naam']; 
    $mail->AddAddress("ethannn@email.com", "Jouw Naam"); // emailadres ontvanger en de naam die in email verschijnt
    $mail->Subject = "Contactformulier";
    // variabelen voor de body en body email opmaken
    $naam = $_POST['naam'];
    $achternaam = $_POST['achternaam'];
    $email = $_POST['email'];
    $bericht = $_POST['bericht'];
    // body opmaken
    $body = "";
    $body .= "Naam: ";
    $body .= $naam;
    $body .= "<br />";
    $body .= "Achternaam: ";
    $body .= $achternaam;
    $body .= "<br />";    
    $body .= "Email: ";
    $body .= $email;
    $body .= "<br />";
    $body .= "Bericht: ";
    $body .= $bericht;
    $body .= "<br />";
    
    $mail->WordWrap = 80; 
    $mail->MsgHTML($body, dirname(__FILE__), true); // genereren van bodybericht 
    
    // check of submitter een robot is en of er geldige input is geleverd
    $mailcheck = spamcheck($_POST['email']);
    
    if($_POST['robot'] != "test_spambot") {
        die();                  
    } 
    //check of email geldig is
    elseif ($mailcheck == false) {
        echo "Ongeldige input van emailadres";
    }
    else {
    
    // email verzenden 
    $formsent = $mail->Send(); 
    
    // echo's als verzenden goed of fout is gegaan
    if ($formsent){
      echo 'Uw bericht is successvol verstuurd!'; 
    }
    else{
      echo 'Sorry, maar er is iets misgegaan met het versturen van het formulier; probeer het later nog eens.'; 
        }
      }
    
    } // eind request method
    ?>
    
    <form action="" method="post" name="" id="">
      <input type="hidden" name="robot" value="test_spambot" /><br />
      Naam: <br />
      <input type="text" name="naam" value ="ethannn"/><br />
      Achternaam: <br />
      <input type="text" name="achternaam" value ="Kikker"/><br />
      Email: <br />
      <input type="text" name="email" value ="kikker@gmail.com"/><br />
      Bericht: <br />
      <textarea name="bericht" />blablabla</textarea>
      <br /><br />
      <input type="reset" value="Reset" />
      <input type="submit" value="Verzenden" />
    </form>
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   xrep    9 年前

    你应该从这里下载PHPMailer- https://github.com/PHPMailer/PHPMailer

    gmail在 示例 名为的文件夹 电子邮件.phps .

    您应该根据示例脚本更改脚本。

    • 编辑 $邮件->端口=578 //端口号不是字符串
    • 添加 $邮件->SMTPDebug=2; //对于调试,您将了解脚本失败的原因
    • 编辑 需要一次() //您应该需要PHPMailerAutoload.php
    • 编辑 $邮件->发送() //其$mail->发送()

    在这些更改之后,如果您的凭据正确,您应该能够成功发送消息。。

    这是完整的版本

        <?php
    
    // functie spamcheck
    function spamcheck($field)
      {
      //filter_var() sanitizes de email 
      $field=filter_var($field, FILTER_SANITIZE_EMAIL);
    
      //filter_var() valideert de email
      if(filter_var($field, FILTER_VALIDATE_EMAIL))
        {
        return true;
        }
      else
        {
        return false;
        }
      }
    
    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    {  
    
    
    // PHP mailer settings instellen voor GMAIL
    require_once ('PHPMailerAutoload.php'); // het pad vanaf dit fomulier naar "class.phpmailer.php"
    $mail = new PHPMailer();
    $mail->CharSet = 'utf-8'; //character set utf-8 
    $mail->IsSMTP();  // smtp protocol gebruiken voor de email te verzenden 
    $mail->Host = "smtp.gmail.com"; // smtp servernaam van gmail
    $mail->Port = 587;  // smtp poort voor gmail 465 or 587
    $mail->SMTPSecure = "tls"; //gmail authenticeert door ssl ( andere optie is tls 
    $mail->SMTPDebug = 2;
    $mail->SMTPAuth = true; 
    // account gegevens voor authenticatie Gmailserver
    $mail->Username = "ethannn@gmail.com"; 
    $mail->Password = "mypassword";
    $mail->From = $_POST['email']; 
    $mail->FromName = $_POST['naam']; 
    $mail->AddAddress("ethannn@email.com", "Jouw Naam"); // emailadres ontvanger en de naam die in email verschijnt
    $mail->Subject = "Contactformulier";
    // variabelen voor de body en body email opmaken
    $naam = $_POST['naam'];
    $achternaam = $_POST['achternaam'];
    $email = $_POST['email'];
    $bericht = $_POST['bericht'];
    // body opmaken
    $body = "";
    $body .= "Naam: ";
    $body .= $naam;
    $body .= "<br />";
    $body .= "Achternaam: ";
    $body .= $achternaam;
    $body .= "<br />";    
    $body .= "Email: ";
    $body .= $email;
    $body .= "<br />";
    $body .= "Bericht: ";
    $body .= $bericht;
    $body .= "<br />";
    
    $mail->WordWrap = 80; 
    $mail->MsgHTML($body, dirname(__FILE__), true); // genereren van bodybericht 
    
    // check of submitter een robot is en of er geldige input is geleverd
    $mailcheck = spamcheck($_POST['email']);
    
    if($_POST['robot'] != "test_spambot") {
        die();                  
    } 
    //check of email geldig is
    elseif ($mailcheck == false) {
        echo "Ongeldige input van emailadres";
    }
    else {
    
    // email verzenden 
    $formsent = $mail->send(); 
    
    // echo's als verzenden goed of fout is gegaan
    if ($formsent){
      echo 'Uw bericht is successvol verstuurd!'; 
    }
    else{
      echo 'Sorry, maar er is iets misgegaan met het versturen van het formulier; probeer het later nog eens.'; 
        }
      }
    
    } // eind request method
    ?>
    
    <form action="" method="post" name="" id="">
      <input type="hidden" name="robot" value="test_spambot" /><br />
      Naam: <br />
      <input type="text" name="naam" value ="ethannn"/><br />
      Achternaam: <br />
      <input type="text" name="achternaam" value ="Kikker"/><br />
      Email: <br />
      <input type="text" name="email" value ="kikker@gmail.com"/><br />
      Bericht: <br />
      <textarea name="bericht" />blablabla</textarea>
      <br /><br />
      <input type="reset" value="Reset" />
      <input type="submit" value="Verzenden" />
      </form>
    

    不要忘记添加PHPMailerAutoload。php,class.smtp。php和class.phpmailer。php从Github repo发布到脚本所在的目录