Php formulier mailen
- Ariën - op 05/04/2016 13:31:18:
Ja, maar het is nog beter om gewoon geen inhoud uit variabelen te kopiëren, en dus gewoon $inhoud te gebruiken in je mail.
Ik ben geen gevorderde. Je bedoel dat ik $inhoud kan verwerking in
mail -> $inhoud?
of message ->$inhoud ?
----------------------------------------------------
De enige foutmelding die ik nu nog krijg is: Mailer Error: Could not instantiate mail function. Ik neem aan dat dit door Xammp veroorzaakt word?
Ik vermoed dat je mail in XAMPP (php.ini) niet goed is ingesteld. Maar je kan ook in phpMailer een andere SMTP server gebruiken, of de server van Gmail. In de manuals staan er vast een hoop examples van.
Gewijzigd op 05/04/2016 14:01:43 door - Ariën -
Het ligt inderdaad aan Xammp.
Wil je er bedanken voor je tijd en hulp. Kan ik nog een +1 geven?
Voor iedereen hier het script:
HTML:
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
36
37
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
36
37
<!-- / form box \ -->
<div class="formBox">
<form action="formulier.php" method="post">
<fieldset>
<div class="holder">
<div class="block">
<label class="label">Voornaam</label>
<input type="text" name="firstname" required />
<label class="label">Straatnaam + Huisnummer</label>
<input type="text" name="street" required />
<label class="label">E-mailadres</label>
<input type="text" name="email" required />
</div>
<div class="block">
<label class="label">Achternaam</label>
<input type="text" name="surname" required />
<label class="label">Woonplaats</label>
<input type="text" name="place" required />
<label class="label">Telefoonummer</label>
<input type="text" name="phonenumber" required />
</div>
</div>
<div class="clear"></div>
<label class="label">Kenteken</label>
<input type="text" name="licenseplate" required />
<label class="label">Opmerking</label>
<textarea rows="5" cols="5" class="textarea" name="comment" ></textarea>
<input type="submit" value="VERSTUREN" class="button" />
</fieldset>
</form>
</div>
<!-- \ form box / -->
<div class="formBox">
<form action="formulier.php" method="post">
<fieldset>
<div class="holder">
<div class="block">
<label class="label">Voornaam</label>
<input type="text" name="firstname" required />
<label class="label">Straatnaam + Huisnummer</label>
<input type="text" name="street" required />
<label class="label">E-mailadres</label>
<input type="text" name="email" required />
</div>
<div class="block">
<label class="label">Achternaam</label>
<input type="text" name="surname" required />
<label class="label">Woonplaats</label>
<input type="text" name="place" required />
<label class="label">Telefoonummer</label>
<input type="text" name="phonenumber" required />
</div>
</div>
<div class="clear"></div>
<label class="label">Kenteken</label>
<input type="text" name="licenseplate" required />
<label class="label">Opmerking</label>
<textarea rows="5" cols="5" class="textarea" name="comment" ></textarea>
<input type="submit" value="VERSTUREN" class="button" />
</fieldset>
</form>
</div>
<!-- \ form box / -->
Php (formulier.php)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierenVelden = array ("firstname", "street", "email", "surname", "place", "phonenumber", "licenseplate", "comment");
// Alle formuliervelden doorlopen
foreach($aFormulierenVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if($sValue == '')
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
$inhoud = "De ingevoerde gegevens zijn:".PHP_EOL;
foreach($aData as $veld=>$waarde) {
$inhoud .= ucfirst($veld).": ".$waarde.PHP_EOL;
}
/**
* This example shows sending a message using PHP's mail() function.
*/
require 'PHPMailer-master/PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Set who the message is to be sent from
$mail->setFrom('[email protected]', 'First Last');
//Set an alternative reply-to address
$mail->addReplyTo('[email protected]', 'First Last');
//Set who the message is to be sent to
$mail->addAddress('[email protected]', 'John Doe');
//Set the subject line
$mail->Subject = 'PHPMailer mail() test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML($body = $inhoud);
//Replace the plain text body with one created manually
$mail->AltBody = 'Offerte aanvraag:';
//send the message, check for errors
if (!$mail->send()) {
echo "Er is een fout opgetreden: " . $mail->ErrorInfo;
} else {
echo "Uw aanvraag is verstuurd! Wij nemen z.s.m contact met u op.";
}
}
else
{
// Fouten opgetreden: weergeven en terug naar home
header('Refresh: 3; url=afspraak_maken.html');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: afspraak_maken.html');
}
?>
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierenVelden = array ("firstname", "street", "email", "surname", "place", "phonenumber", "licenseplate", "comment");
// Alle formuliervelden doorlopen
foreach($aFormulierenVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if($sValue == '')
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
$inhoud = "De ingevoerde gegevens zijn:".PHP_EOL;
foreach($aData as $veld=>$waarde) {
$inhoud .= ucfirst($veld).": ".$waarde.PHP_EOL;
}
/**
* This example shows sending a message using PHP's mail() function.
*/
require 'PHPMailer-master/PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer;
//Set who the message is to be sent from
$mail->setFrom('[email protected]', 'First Last');
//Set an alternative reply-to address
$mail->addReplyTo('[email protected]', 'First Last');
//Set who the message is to be sent to
$mail->addAddress('[email protected]', 'John Doe');
//Set the subject line
$mail->Subject = 'PHPMailer mail() test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML($body = $inhoud);
//Replace the plain text body with one created manually
$mail->AltBody = 'Offerte aanvraag:';
//send the message, check for errors
if (!$mail->send()) {
echo "Er is een fout opgetreden: " . $mail->ErrorInfo;
} else {
echo "Uw aanvraag is verstuurd! Wij nemen z.s.m contact met u op.";
}
}
else
{
// Fouten opgetreden: weergeven en terug naar home
header('Refresh: 3; url=afspraak_maken.html');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: afspraak_maken.html');
}
?>
- Ariën - op 05/04/2016 14:01:20:
Nee, je kan gewoon $inhoud overal gebruiken, want waarom zou je dit nog eens in een $body kopiëren?
Ik vermoed dat je mail in XAMPP (php.ini) niet goed is ingesteld. Maar je kan ook in phpMailer een andere SMTP server gebruiken, of de server van Gmail. In de manuals staan er vast een hoop examples van.
Ik vermoed dat je mail in XAMPP (php.ini) niet goed is ingesteld. Maar je kan ook in phpMailer een andere SMTP server gebruiken, of de server van Gmail. In de manuals staan er vast een hoop examples van.
Gewijzigd op 05/04/2016 14:19:15 door - Ariën -
Je moet php.ini goed instellen. Of anders een SMTP van je provider met de SMTP-functies van phpMailer.
Zie ook de examples:
https://github.com/PHPMailer/PHPMailer/tree/master/examples
Dus dit kan je anders toevoegen, met de juiste waardes dan uiteraard:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = "mail.example.com";
//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication
$mail->Username = "[email protected]";
//Password to use for SMTP authentication
$mail->Password = "yourpassword";
//Set who the message is to be sent from
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = "mail.example.com";
//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication
$mail->Username = "[email protected]";
//Password to use for SMTP authentication
$mail->Password = "yourpassword";
//Set who the message is to be sent from
Gewijzigd op 05/04/2016 14:23:21 door - Ariën -
PHPHULP, PHPHULP!
Graag gedaan!