Door
Koen de Bakker
op 30-09-2014 21:37
gewijzigd op 30-09-2014 21:50
2.247 views
Hallo,
Ik ben mij aan het verdiepen in de wonderbaarlijke wereld van PHP en ik zit met een mailformuliertje en een stukje php om het formulier af te handelen, die niet doen wat ik had gehoopt dat ze zouden doen. De inhoud zou ik in de mail moeten ontvangen, maar dat gebeurt dus niet.
Dit is het formuliertje:
oefenbestand formulier.php
<form action ="formulier uitlezen.php" method = "post">
<input type = "hidden" name = "to" value = "[email protected]">
<input type = "hidden" name = "subject" value = "mail van het oefenbestand">
<input type = "hidden" name = "redirect" value = "roterende homepage 1.html">
naam: <input type = "text" name = "naam"> <br />
E-mail: <input type = "text" name = "mailadres"> <br />
Uw reactie: <textarea cols = "30" rows = "4" name = "reactie"></textarea> <br />
<input type = "submit" value = "verzenden">
En dit is het bestandje om het formulier af te handelen:
Kan iemand mij zeggen wat ik hier fout doe (heb ook al wat geprobeerd met localhost)? Ik heb een mailaccount bij zeelandnet en die is gekoppeld aan m'n gmail. Daar lees ik altijd mijn mail uit. Misschien heeft het daar wat mee te maken?
Hopelijk stel ik hiermee geen al te stomme vraag en kan iemand me uit de brand helpen.
Met $_POST['reactie'] sla ik inderdaad een hoop onnodige handelingen over.
Heb je nog een suggestie voor me hoe ik de gegevens uit het formulier in mijn mailbox binnen kan krijgen (ook al is het bij mij nu nog lokaal geknutsel via xampp)? Dat is voor mij de stap naar iets wat uiteindelijk een online werkregistratie voor op mijn werk moet worden.
Bij voorbaat dank,
Koen.
?Onbekende gebruiker
30-09-2014 22:51
Koen,
Ik heb hier een script die gebruik maakt van een class, PHPmailer.
Dit script is zo ingericht zodat je gemakkelijk emails kunt sturen gebruikmakend van een externe SMTP server.
<?php
// Eerst gaan we de error reporting aanzetten zodat we kunnen zien wat er misgaat
error_reporting(E_ALL & ~E_NOTICE);
// We gaan de autoloader inladen zodat we alles uit de class kunnen gebruiken
require 'PHPMailerAutoload.php';
// We maken een nieuw object aan zodat we een e-mail kunnen gaan versturen
$mail = new PHPMailer;
$mail->SMTPDebug = 3; // We willen HEEL graag zien wat er gebeurd en misschien fout gaat
$mail->isSMTP(); // We gaan een e-mail sturen via een andere server, Google in dit geval
$mail->Host = 'smtp.gmail.com'; // Hoe heet de server waar we vanaf willen sturen?
$mail->SMTPAuth = true; // Ja we willen de STMP gebruiken van een andere server
$mail->Username = '[email protected]'; // Jou gebruikersnaam van gmail incl. @gmail.com
$mail->Password = 'en-jou-wachtwoord'; // Jou wachtwoord voor Gmail
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = '[email protected]'; // Dit is de afzender van de e-mail
$mail->FromName = 'Jou-naam'; // En jou naam, dit voorkomt dat het gezien wordt als SPAM
$mail->addAddress('[email protected]', 'Joe User'); // Naar wie moet het toe?
$mail->isHTML(true); // Wordt de e-mail in HTML of niet?
$mail->Subject = 'Here is the subject'; // Jou onderwerp
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; // Hier jou HTML inhoud
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; // En hier alles zonder HTML, maar dit is niet verplicht
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
Nu is het aan jou om een urenbriefje te maken die dan in de body van de e-mail gezet wordt.
Uiteraard kunnen we je erbij helpen mocht je vastlopen.
Sorry ik was nog vergeten dat je ook PHPmailer even moet downloaden.
Op PHP Versie 5.4.4 krijg je met phpmailer deprecated warnings op de get_magic_quotes() function.
?Onbekende gebruiker
01-10-2014 01:32
@john. Ik heb een pull request bij ze ingediend waarmee dit in PHP 5.4 verholpen zou moeten zijn.
Er wordt al wel een check gedaan door hun alleen kent php de functie niet en geeft hij daardoor een error.
Als hij erdoor is zal ik het aangeven en kunnen jullie de nieuwe versie weer downloaden.
gaf mij instructies en ik heb ze letterlijk overgenomen en in http://localhost/test.html geplaatst om de combinatie van html en php uit te proberen.
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "inschrijving";
bovenstaande tekst heb hiermee dus aangepast zoals gevraagd,
ook heb ik er nog geen spam filter er nog opgedaan totdat het nodig is.
Toch ontvang ik geen mail.
doe ik iets fout of moet ik SMTP instellen via XAMMP of local server?
Misschien handig om in een vervolg een nieuw topic te starten, voordat er twee discussies door elkaar heen starten.
Verder gebruik dit de normale mail()-functie van PHP. Je zult OF SMTP in moeten stellen in je php.ini (met restart van Apache), OF eenmailserver moeten installeren, maar dat raad ik niet aan voor beginners, gezien een onveilige mailserver als spam-doorgeefluik kan dienen.