使用Gmail的PHPmailer不起作用

时间:2015-07-19 20:11:29

标签: php phpmailer

我想使用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 个答案:

答案 0 :(得分:1)

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

示例文件夹中有一个名为 gmail.phps 的gmail工作用例。

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

  • 编辑 $ mail-&gt;端口= 578 //端口号不是字符串
  • 添加 $ mail-&gt; SMTPDebug = 2; //用于调试你的脚本会失败的原因
  • 编辑 require_once() //您应该要求PHPMailerAutoload.php
  • 修改 $ mail-&gt;发送() //其$ mail-&gt; send()

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

这是完整版

    <?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我发布到你的脚本所在的目录