2015-07-19 5 views
-1

Я хотел бы создать форму электронной почты с помощью gmail, но не могу заставить ее работать. Я загрузил PHPmailer и загрузил их. Форма работает, она также проверяет правильность адреса электронной почты, но не показывает сообщение после нажатия кнопки отправки и не отправляет электронное письмо.PHPmailer с использованием Gmail не работает

Я также включил доступ для менее защищенных приложений в настройках 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

возможный дубликат [отправить электронную почту, используя сервер Gmail SMTP через PHP Mailer] (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 в примерах папка с именем gmail.phps.

Вы должны изменить свой сценарий на основе сценария примера.

  • редактировать $ mail-> Port = 578 // Номер порта не является строкой
  • добавить $ mail-> SMTPDebug = 2; // для отладки вы себе почему ваш сценарий неудачу
  • Редактировать require_once() // Вы должны требовать PHPMailerAutoload.php
  • редактировать $ mail-> Send() // его $ 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 репо я разместил в директории, где ваш скрипт помещенного

+0

спасибо xrep. это сработало. Теперь я получаю электронное письмо с содержимым, предоставленным пользователем. Однако есть ошибка. – Ethannn

+0

Доставка по следующему получателю не удалось окончательно: [email protected] Технические детали постоянного отказа: Google пытался доставить ваше сообщение, но оно было отклонено сервером для домена получателя email.com по mx01.gmx .com. [74.208.5.27]. ошибка, что другой сервер возвратил была: 550 Требуемое действие не выполнено: почтовый ящик недоступен ----- ----- Первоначальное сообщение DKIM-подписи: v = 1; а = sha256-RSA; с = расслаблены/расслаблены; 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