E-mail versturen
Na het voltooien van mijn inlog formpje wilde ik het geheel een stap verder brengen met het realiseren van een verificatie e-mail na een registratie. Ik ben de PHP mail() ingedoken maar tot dusver heeft het me nog niks opgeleverd. Ik ben begonnen met de basis $subj, $body, $to, $from. Deze code werd goed afgehandeld want ik kwam bij het bericht: Email is verstuurd. Echter de emails kwamen nooit aan (ook niet in de ongewenst map). Vervolgens ben ik het internet afgestruind en ben ik veel theorie stukken tegengekomen maar het wil nog niet echt een kloppend en duidelijk verhaal vormen.
Het doel is simpel: Ik moet een mail sturen naar een bepaald persoon die in mijn code onder $email gedefinieerd wordt. Dit wil ik in eerste instantie doen via mijn XAMPP als een soort test. Later wil ik dit doen met een niet-test server. Nu ben ik PHPMailer, PEAR, etc. tegengekomen maar deze code wil ook niet werken omdat ik vast en zeker iets verkeerd doe. Hier is de code die ik op dit moment gebruik, zou iemand mij uit kunnen leggen waar het misgaat?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "localhost"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Port = 25;
$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "mijngmail wachtwoord"; // SMTP password
$mail->SetLanguage("nl");
$mail->From = "[email protected]";
$mail->FromName = "Mailer";
$mail->AddAddress("$email");
// name is optional
$mail->AddReplyTo("[email protected]", "Information");
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = "Account registratie";
$mail->Body = "Je bent succesvol geregistreerd met de gebruikersnaam $username. Klik op de volgende link om je account te bevestigen. rn </b>http://www.yourname.com/confirm.php?passkey=$com_code";
$mail->AltBody = "Je bent succesvol geregistreerd met de gebruikersnaam $username. Klik op de volgende link om je account te bevestigen. rn </b>http://www.yourname.com/confirm.php?passkey=$com_code";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
}
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "localhost"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Port = 25;
$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "mijngmail wachtwoord"; // SMTP password
$mail->SetLanguage("nl");
$mail->From = "[email protected]";
$mail->FromName = "Mailer";
$mail->AddAddress("$email");
// name is optional
$mail->AddReplyTo("[email protected]", "Information");
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = "Account registratie";
$mail->Body = "Je bent succesvol geregistreerd met de gebruikersnaam $username. Klik op de volgende link om je account te bevestigen. rn </b>http://www.yourname.com/confirm.php?passkey=$com_code";
$mail->AltBody = "Je bent succesvol geregistreerd met de gebruikersnaam $username. Klik op de volgende link om je account te bevestigen. rn </b>http://www.yourname.com/confirm.php?passkey=$com_code";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
}
*Foutmelding is steeds dat die geen verbinding kan maken met de SMTP host.
Als from wil ik mijn gmail account gebruiken. De host is nu mijn localhost (omdat ik het even als test doe en xampp gebruik).
Ik heb ook nog een paar vragen om het verhaal wat duidelijker te krijgen.
1. Klopt het dat de gewone mail() functie beter niet gebruikt kan worden omdat de mail dan meestal in de ongewenst map komt?
2. Wordt bij de gewone mail() functie de SMTP niet al (automatisch) geconfigureerd of geset?
3. Waarom zou ik PHPMailer beter kunnen gebruiken dan de normale mail functie? (wat waarschijnlijk ook deels als antwoord komt op de vorige vragen)
4. En natuurlijk wat gaat er mis in mijn code en hoe zorg ik dat die email verzonden wordt;)
Ik hoop dat het een beetje duidelijk is voor jullie en vergeet niet: beginner hé.
Toevoeging op 27/12/2013 13:16:59:
Gewijzigd op 27/12/2013 13:17:56 door Nicolas Mousserin
Draai je dan zelf ook een mailserver?
Ik stuur nijn mail altijd gewoon met mail() van PHP.
Gewijzigd op 27/12/2013 13:24:56 door - SanThe -
Zoja dan moet je het volgende veranderen:
Code (php)
1
2
3
2
3
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587; // verander poort van 25 naar 587
$mail->Host = "smtp.gmail.com";
$mail->Port = 587; // verander poort van 25 naar 587
Gewijzigd op 27/12/2013 13:25:15 door Jordi Kroon
- SanThe - op 27/12/2013 13:23:23:
$mail->Host = "localhost";
Draai je dan zelf ook een mailserver?
Ik stuur nijn mail altijd gewoon met mail() van PHP.
Draai je dan zelf ook een mailserver?
Ik stuur nijn mail altijd gewoon met mail() van PHP.
Nee ik draai zelf geen mail server, en de mail() functie heb ik geprobeerd maar deze verstuurde de mails niet om de een of andere reden.
Toevoeging op 27/12/2013 15:31:28:
Jordi Kroon op 27/12/2013 13:24:22:
Yes dat deed het hem! Mail is verstuurd en aangekomen! Hartstikke bedankt!