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>
Waarom gebruik je geen phpMailer?
Dit is een volledig geïntegreerde formulier in mijn html website en de formulieren heb ik zelf in mekaar geflanst.
phpMailer heb ik naar gekeken, maar dat is voor mij geen optie
Om welke reden is dat geen optie? Je kan er eenvoudig SMTP-authenticatie instellen.

De mail() functie zelf ondersteunt dit overigens niet.
Ik wil graag dat wat ik nu heb weer werkt, er zijn nog meer en grotere formulieren dan dit, maar als ik de code voor deze 2 weet kom ik er wel uit.

Wat bedoel je met; De mail() functie zelf ondersteunt dit overigens niet.
De standaard mail()-functie ondersteunt geen SMTP-authenticatie. Dus de beste oplossing is om te grijpen naar de PEAR-packages of phpMailer.

Die laatste is wel snel te implementeren. Met het bijkomende voordeel dat je jezelf niet hoeft te bekommeren om de headers.
Dus wat ik wil kan niet? bedoel je dat?
Het kan niet op de manier zoals jij toepast.
phpMailer is veel handiger in gebruik, makkelijker te debuggen en eveneens snel te implementeren.
Als je phpMailer niet wilt gebruiken zou ik voor PEAR kiezen, is heel simpel en vereist nauwelijks aanpassing van je huidige code. Vervang het mail gedeelte wat je nu hebt hierdoor, en vervang
$smtp_van
$smtp_naar
$onderwerp
$bericht
door je eigen variabelen.

en
$host
$username
$password
door jouw smtp gegevens


<?php
$headers = array ('MIME-Version' => '1.0rn',
        	'Content-Type' => "text/html; charset=ISO-8859-1rn",
        	'From' => $smtp_van,
        	'To' => $smtp_naar,
        	'Subject' => $onderwerp );
$smtp = Mail::factory('smtp',
   		array ('host' => $host,
     		'auth' => true,
     		'username' => $username,
     		'password' => $wachtwoord));

$mail = $smtp->send($smtp_naar, $headers, $bericht);
 
if (PEAR::isError($mail)) {
	code voor errormelding 
} else {
	code voor geslaagd 
}
?>


[size=xsmall]Toevoeging op 29/03/2017 20:03:11:[/size]

O, en je moet even de pear mail class includen. Als je host pear geinstalleerd heeft dan is dit stukje code daarvoor afdoende:

include_once ('Mail.php');

Sorry ik snap er niets van :(
phpMailer krijg ik niet geïnstalleerd, bestanden geupload maar nergens zie ik een installatie pagina
En pear (wat ik voor mijn vraag op het forum ook al had geprobeerd) stuurt niets, ik krijg alleen een wit scherm te zien na verzending.
Er is geen installatie nodig voor phpMailer.
Uploaden, de class aanroepen, de functies ervan en klaar.

Bekijk de manual eens.

Reageren