Hoi,


Gezien sendmail stokoud is, werd me aangeraden PHPMailer te gebruiken. Ik probeer hier dan ook mee aan de slag te gaan. Het lijkt heel simpel en is gelijkaardig aan sendmail behalve dat het kan gebruik maken van SMTP.

Maar het schoentje knelt..

Zit al uren te zoeken waar mijn fout kan liggen maar ik zie het niet. Kan iemand in onderstaande code de fout zien? Mijn ogen beginnen alvast stilaan te wennen aan de foute code ;)

Html van form in index.html
---------------------------
<form  class="form clearfix" action="sendmail.php" method="POST">
  <input type="text"  class="span12" id="name"    name="name"    value="" placeholder="Naam">
  <input type="email" class="span12" id="email"   name="email"   value="" placeholder="Uw e-maildres">
  <input type="text"  class="span12" id="subject" name="subject" value="" placeholder="Onderwerp">
  <textarea class="span12" id="message" name="message" placeholder="Uw vraag of reservatie" rows="6">  
  </textarea>
  <button class="btn btn-large pull-right" type="submit">Verzenden</button>
</form>



PHP van sendmail.php
--------------------

<?php

require 'PHPMailerAutoload.php';

function sendemail($name, $email, $subject, $message)
{

    $mail = new PHPMailer;

    //$mail->SMTPDebug = 3;                               // Enable verbose debug output

    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'mail.mijndomeinnaam.be';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'mijnemailadres';                   // SMTP username
    $mail->Password = 'mijnpaswoord';                     // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 465;                                    // TCP port to connect to


    $mail->setFrom($email, $name);
    $mail->addAddress('mijnemailadres', 'Wouter DM');     // Add a recipient
    $mail->addReplyTo($email, $name);


    $mail->Subject = $subject;
    $mail->Body    = $message;



}

function validate($name, $email, $subject, $message)
{
    $error = '';

    if($name == '')
        $error = 'Please fill in your name';
        
    if(!filter var($email, FILTER_VALIDATE_EMAIL))
        $error = 'Please fill in your email';

    if($subject == '')
        $error = 'Please fill in a subject';

    if($message == '')
        $error = 'Please fill in your message';
        


    return $error;
    
    
       
}

$name = '';
$email = '';
$subject = '';
$message = '';

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	//formulier is verzonden
	
  
  $name = $_POST['name'];
  $email = $_POST['email'];
  $subject = $_POST['subject'];
  $message = $_POST['message'];
  
  $error = validate($name, $email, $subject, $message);
  
  if($error != '')
        echo $error;
  else
       if (sendemail($name, $email, $subject, $message) == true)
            header('Location: thankyou.html');
}


?>

Heb je ook de email validatie aangepast?

Met 2 van de 3 suggesties die ik heb gedaan, werkt het.
Validatie heb ik eruit gehaald en aan bootstrap overgelaten.


[size=xsmall]Toevoeging op 17/09/2016 11:27:59:[/size]

@Adoptive: Dus bij jou werkt het? We hebben dezelfde code? Of heb je iets compleet anders?
. Smtp gebruik ik niet, dus dat is comment. Voor de rest werkt het zoals het hieronder is geplakt :

<?php

function sendemail($name, $email, $subject, $message) {

	require 'PHPMailerAutoload.php';
	$mail = new PHPMailer;
	
	//$mail->SMTPDebug = 3;                               // Enable verbose debug output
	
//	$mail->isSMTP();                                      // Set mailer to use SMTP
//	$mail->Host = 'mail.kpnplanet.nl';  // Specify main and backup SMTP servers
//	$mail->SMTPAuth = false;                               // Enable SMTP authentication
//	$mail->Username = 'mijnemailadres';                   // SMTP username
//	$mail->Password = 'mijnpaswoord';                     // SMTP password
//	$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
//	$mail->Port = 465;                                    // TCP port to connect to
	
	$mail->setFrom($email, $name);
	$mail->addAddress('[email protected]', 'Wouter DM');     // Add a recipient
	$mail->addReplyTo($email, $name);
	
	$mail->Subject = $subject;
	$mail->Body    = $message;

	if (!$mail->send()) {
		echo "Mailer Error: " . $mail->ErrorInfo . '<br />' . PHP_EOL;
	} else {
		echo "Message sent!" . '<br />' . PHP_EOL;
	}

}

function validate($name, $email, $subject, $message)
{
    $error = '';

    if($name == '')
        $error = 'Please fill in your name';
        
	if ( filter_var($email, FILTER_VALIDATE_EMAIL) === false )
		$error = "$email is not a valid email address<br />" . PHP_EOL;

    if($subject == '')
        $error = 'Please fill in a subject';

    if($message == '')
        $error = 'Please fill in your message';
        


    return $error;
    
    
       
}

$name = '';
$email = '';
$subject = '';
$message = '';

//if ( $_REQUEST["submit"] ) {
if( $_SERVER['REQUEST_METHOD'] == 'POST') {
	//formulier is verzonden
	
	$name = $_POST['name'];
	$email = $_POST['email'];
	$subject = $_POST['subject'];
	$message = $_POST['message'];
	
	$error = validate($name, $email, $subject, $message);
	
	if($error != '') {
		echo $error;
	} else {
		sendemail($name, $email, $subject, $message);
		//header('Location: thankyou.html');
	}
}

?>
Probleem bijna opgelost. Ik krijg wel melding dat de mail is verzonden, ook via smtp.
Maar... ik krijg de mails van het formulier niet binnen in m'n mailbox...
Kan ik hier ergens error-reporting doen? Of heeft iemand een idee waar het schoentje knelt?

[size=xsmall]Toevoeging op 18/09/2016 00:37:16:[/size]

@adoptive: Alvast bedankt voor jouw hulp! Ik heb wel nog de vraag voor u waarom je "PHP_EOL;" vermeldt in de code?
Jouw domein van je mailadres op je lijn 19, komt die overeen met de site waar je vandaan stuurt?
probeer het ook eens met een paar andere adressen om de mail aan te sturen.

Je zult de eerste niet zijn die 3 dagen bezig is om uit te vinden dat Gmail of KPN of hosterX vindt dat de mail op spam lijkt en hem dus maar vast tegenhoudt

Reageren