2015-07-19 58 views
-1

我想使用Gmail創建一個電子郵件表單,但無法使其工作。 我下載了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 = "[email protected]"; 
$mail->Password = "mypassword"; 
$mail->From = $_POST['email']; 
$mail->FromName = $_POST['naam']; 
$mail->AddAddress("[email protected]", "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 ="[email protected]"/><br /> 
    Bericht: <br /> 
    <textarea name="bericht" />blablabla</textarea> 
    <br /><br /> 
    <input type="reset" value="Reset" /> 
    <input type="submit" value="Verzenden" /> 
</form> 
+0

可能重複PHP的梅勒](http://stackoverflow.com/questions/16048347/send-email-using-gmail-smtp-server-through-php-mailer) – SHAZ

+0

謝謝你的鏈接,但無法找到答案 – Ethannn

回答

1

你應該從這裏下載PHPMailer的 - https://github.com/PHPMailer/PHPMailer

有一個在例子文件夾命名爲gmail.phps工作使用情況的Gmail。

您應該根據示例腳本更改您的腳本。

  • 編輯$ MAIL->端口= 578 //端口號是不是字符串
  • 添加$ MAIL-> SMTPDebug = 2; //用於調試運行,你會本身爲什麼你的腳本未能
  • 編輯require_once() //如果您需要PHPMailerAutoload.php
  • 編輯$ MAIL->發送() //其$ 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 = "[email protected]"; 
$mail->Password = "mypassword"; 
$mail->From = $_POST['email']; 
$mail->FromName = $_POST['naam']; 
$mail->AddAddress("[email protected]", "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 ="[email protected]"/><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回購我張貼到目錄中的腳本放置[使用Gmail SMTP服務器通過發送電子郵件

+0

謝謝XREP。那工作。我現在收到用戶提供的內容的電子郵件。但是也有一個錯誤。 – Ethannn

+0

傳遞到下列收件人永久失敗: [email protected] 永久性故障的技術細節: 谷歌試圖將您的郵件,但它是由服務器收件人網域拒絕email.com通過mx01.gmx .COM。 [74.208.5.27]。 ,其他服務器返回的錯誤是: 550請求的操作未執行:郵箱不可 -----原始消息----- DKIM簽名:V = 1; A = RSA-SHA256; C =輕鬆/放鬆; d = gmail.com; S = 20120113; h = from:date:to:subject:message-id:mime-version:content-type :content-transfer-enc ..................... ..... – Ethannn

+0

貌似[email protected]郵箱地址不存在..可能是您有錯別字? $ mail-> AddAddress(「[email protected]」,「Jouw Naam」);電子郵件地址[email protected]是否正確?嘗試把[email protected]或其他有效的郵件地址 – xrep