Onlangs heeft mijn hosting bedrijf een wijziging doorgevoerd, namelijk; dat SMTP-authenticatie verplicht is in formulieren.
Probleem is dat ik er niet uit kom, heb internet afgeseurd van dingen geprobeerd, maar ik heb te weinig kennis van php.
Hieronder de 2 code stukken voor mijn 2 formulieren waar de smtp in moet worden verwerkt (nu dus zonder smtp)
Hoe moet de code zijn?

Code voor de contractformulier;


<?php
if(isset($_POST['submit']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$query = $_POST['message'];
$email_from = $name.'<'.$email.'>';

$to="[email protected]";
$subject="Bericht contactformulier SVN";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: ".$email_from."\r\n";
$message="

Naam:
$name
<br>
Email:
$email
<br>
Bericht:
$query

";
if(mail($to,$subject,$message,$headers))
header("Location:../contact.php?msg=Bedankt voor uw bericht.");
else
header("Location:../contact.php?msg=Error Email niet verzonden!");
//contact:[email protected]
}
?>




-------------------------------------------------------------------------------------------------------
En hieronder de code voor het lidmaatschap formulier;
-------------------------------------------------------------------------------------------------------


<?php
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Actions.php
* bestelling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

$mode = $_GET["mode"];

if($mode == "Bestelling"){

echo"<html>
<head>
<title>Lidmaatschap aanmelding</title>
</head>
<body>
Uw bericht wordt verzonden...
</body>
</html>";
$naam = $_POST["naam"];
$adres = $_POST["adres"];
$postcode1 = $_POST["postcode1"];
$woonplaats = $_POST["woonplaats"];
$land = $_POST["land"];
$telefoonnummer = $_POST["telefoonnummer"];
$email = $_POST["email"];
$bank = $_POST["bank"];
$hond = $_POST["hond"];
$geslacht = $_POST["geslacht"];
$stamboom = $_POST["stamboom"];
$type = $_POST["type"];
$datum = $_POST["datum"];
$vader = $_POST["vader"];
$moeder = $_POST["moeder"];
$fokker = $_POST["fokker"];
$opmerkingen = nl2br($_POST["opmerkingen"]);


$afzender = "$naam <$email>";
$aan = "<[email protected]>";
$onderwerp = "Lidmaatschap aanmelding van $naam";

$msg = "Lidmaatschap aanmelding op ikke: $naam

<br/><strong style='width: 160px;'>naam:</strong> $naam
<br/><strong style='width: 160px;'>adres:</strong> $adres
<br/><strong style='width: 160px;'>postcode:</strong> $postcode1
<br/><strong style='width: 160px;'>woonplaats:</strong> $woonplaats
<br/><strong style='width: 160px;'>land:</strong> $land
<br/><strong style='width: 160px;'>telefoonnr:</strong> $telefoonnummer
<br/><strong style='width: 160px;'>email:</strong> $email
<br/><strong style='width: 160px;'>bank:</strong> $bank
<br/><strong style='width: 160px;'>naam van hond:</strong> $hond
<br/><strong style='width: 160px;'>geslacht:</strong> $geslacht
<br/><strong style='width: 160px;'>stamboomnummer:</strong> $stamboom
<br/><strong style='width: 160px;'>stamboom type:</strong> $type
<br/><strong style='width: 160px;'>geboortedatum:</strong> $datum
<br/><strong style='width: 160px;'>vader van de hond:</strong> $vader
<br/><strong style='width: 160px;'>moeder van de hond:</strong> $moeder
<br/><strong style='width: 160px;'>fokker:</strong> $fokker
<br/><strong style='width: 160px;'>extra opmerkingen:</strong> $opmerkingen";



$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $afzender\r\n";

$mail = mail($aan, $onderwerp, $msg, $headers);

if($mail){
echo "<script type='text/javascript'>location.href='mailing.html';</script>";
}else{
echo "<script type='text/javascript'>location.href='error.html';</script>";
}
}
?>
<head><title></title></head>
Ik snap het niet, ik krijg bij verzenden alleen een wit scherm, en krijg geen mail binnen

Dit is de code die ik nu heb, mail moet naar de [email protected]

<?php

date_default_timezone_set('Etc/UTC');
require '../PHPMailerAutoload.php';

$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "mail.zegiklekkerniet.nl";
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "geheim";
$mail->addAddress('[email protected]');

if(isset($_POST['submit']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$query = $_POST['message'];
$email_from = $name.'<'.$email.'>';

$to="[email protected]";
$subject="Bericht contactformulier";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: ".$email_from."\r\n";
$message="

Naam:
$name
<br>
Email:
$email
<br>
Bericht:
$query

";
if(mail($to,$subject,$message,$headers))
header("Location:../contact.php?msg=Bedankt voor uw bericht.");
else
header("Location:../contact.php?msg=Error Email niet verzonden!");
//contact:[email protected]
}
?>


@ joakim, nee
@ ivo, ik zal er naar kijken
volg even de voorbeelden in een los script.

Wa je nu doet, komt neer op:
- phpmailer aanroepen
- phpmailer een stukje vullen
- daarna doe je niets meer met phpmailer en val je terug op je oude script met mail() erin

Kijk in een voorbeeld hoe je phpmailer moet gebruiken.

nou vooruit:
<?php
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "mail.zegiklekkerniet.nl";
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "geheim";
$mail->addAddress('[email protected]');

$mail->Body = 'dit is de inhoud. bijv. $message';
if($mail->Send()) {
echo 'yeh';
}
else {
echo 'oei';
}
?>
?>


[size=xsmall]Toevoeging op 30/03/2017 10:56:43:[/size]

nb: niet met header- location van de pagina springen bij het ontwikkelen: je ziet dan met een beetje pech de foutmeldingen niet meer.
Anton, https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps. Daar staat een voorbeeld met commentaar... En als je dat vergelijkt met je laatst gestuurde script, dan zie je van zelf wat je fout doet.

1: Je roept de PHPMailer class niet aan, je begint gelijk met "$mail->SMTPDebug = 2;"... Maar waar komt $mail vandaan? Die moet je toch echt eerst aanmaken met "$mail = new PHPMailer;"... Daarom krijg je ook een wit scherm, PHP geeft een error. Zet PHP error reporting even aan ;-)
2: Je stelt mooi SMTP en alles in, allemaal leuk en aardig maar vervolgens doe je er niks mee want je wil de mail nog steeds versturen met de standaard mail() functie. De mail moet je dus wel versturen met PHPMailer, dus door $mail->send().

Kijk gewoon goed na het voorbeeld, en lees goed wat er gebeurd.
@ joakim die had ik gezien, maar heb dat ds fout gedaan
@ ivo dit heb ik dan nu, maar ik krijg een wit scherm

<?php

date_default_timezone_set('Etc/UTC');
require '../PHPMailerAutoload.php';

$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "mail.zegiklekkerniet.nl";
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "geheim";
$mail->addAddress('[email protected]');

$mail->Body = '$message="

Naam:
$name
<br>
Email:
$email
<br>
Bericht:
$query

";
if($mail->Send()) {
echo 'Bedankt voor uw bericht.';
}
else {
echo 'Error Email niet verzonden!';
}
?>
wat joakim al opmerkte:

op regel 5 mis je

$mail = new phpmailer();



[size=xsmall]Toevoeging op 30/03/2017 11:36:39:[/size]

en:

http://www.pfz.nl/wiki/troubleshooter/#stap-1-regel-een-foutmelding



[size=xsmall]Toevoeging op 30/03/2017 11:37:48:[/size]

ah
en je scherm is wit wegens een parse error.

Zie hoe op jouw regel 27 de tekst rood blijft. op regel 26 mis je voor de punt-komma nog een '
er zit wat leven in.
ik krijg nu een foutmelding
Could not instantiate mail function.
Error Email niet verzonden!

Ik heb op de troubleshooter link gezocht maar daar zag ik hem niet tussen staan
de link die ik gaf was "Troubleshooter: regel een foutmelding"

Dat is nu gelukt.

Kijk eens naar een voorbeeld

http://phpmailer.worxware.com/index.php?pg=exampleasmtp

jij mist bijvoorbeeld de aanroep: $mail->IsSMTP();

daarmee zou je aangeven dat er mail via smpt verstuurd moet worden...
dit krijg ik nu, ik denk dat er iets mis is met het mail en wachtwoord die ik opgegeven heb?
ik heb de user name en password van ftp geprobeerd en een gebruikersnaam en wachtwoord van een mail, maar niets...

SERVER -> CLIENT: 220 ProFTPD 1.3.5a Server ready.
CLIENT -> SERVER: EHLO www.omg.nl
SERVER -> CLIENT:
SMTP ERROR: EHLO command failed:
SMTP NOTICE: EOF caught while checking if connected
SMTP Error: Could not authenticate.
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Error Email niet verzonden!


huidige code;
<?php

date_default_timezone_set('Etc/UTC');
require '../PHPMailerAutoload.php';
$mail = new phpmailer();
$mail->IsSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = "mail.dewebsite.nl";
$mail->Port = 21;
$mail->SMTPAuth = true;
$mail->Username = "inlogftp";
$mail->Password = "geheim";
$mail->addAddress('[email protected]');

$mail->Body = '$message="

Naam:
$name
<br>
Email:
$email
<br>
Bericht:
$query

"';
if($mail->Send()) {
echo 'Bedankt voor uw bericht.';
}
else {
echo 'Error Email niet verzonden!';
}
?>
$mail->Port = 21;

Is geen mailserver maar ftpserver

Ik heb de user name en password van ftp geprobeerd en een gebruikersnaam en wachtwoord van een mail, maar niets..

Waarom van de FTP? Je wilt iets mailen, en daar heb je geen FTP bij nodig.
Of de wachtwoorden moeten toevallig gelijk zijn, maar dan moet je niet over FTP beginnen ;-)

Ik zou poort 25 proberen of 587.

Reageren