PHP mail
Ik wil graag database gegevens versturen over de mail. Maar, dit wil ik netjes presenteren.
Het lukt mij wel een html tabel te presenteren in een mailtje, alleen krijg ik daar geen php variabelen vanuit de database in. Kan iemand mij hiervan een voorbeeld geven, of is dit onmogelijk?
Kort gezegd: een html tabel met php variabelen.
vb: <td>Naam:</td><td>$variabele</td>
Met vriendelijke groet,
Wouter
wat lukt er niet aan, en waar loop je precies vast op, en wat heb je geprobeerd?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$to = "[email protected]";
$subject = "onderwerp van voorbeeld berichtje";
$variabel_naampje = "Janus";
$html_bericht = "...html... <td>Naam:</td><td>".$variabel_naampje."</td>...html...";
mail($to, $subject, $html_bericht);
?>
$to = "[email protected]";
$subject = "onderwerp van voorbeeld berichtje";
$variabel_naampje = "Janus";
$html_bericht = "...html... <td>Naam:</td><td>".$variabel_naampje."</td>...html...";
mail($to, $subject, $html_bericht);
?>
Zoiets? eventueel headers toevoegen om niet als spam gemarkeerd te worden.
Gewijzigd op 12/10/2010 20:03:41 door Massimo W
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
95
96
97
98
99
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
95
96
97
98
99
<link rel="stylesheet" href="../opmaak.css" type="text/css">
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$mail_naar = $_POST['email'];
$mail_onderwerp = 'test';
$mail_headers = 'MIME-Version: 1.0' . "\r\n";
$mail_headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$mail_headers = 'From:'.$_POST['naam'].'<'.$_POST['email'].'>';
// Checkt of alle velden juist zijn ingevuld.
$error= array();
if(!ctype_print($_POST['naam']) || !preg_match('~^[a-zA-Z][a-zA-Z.\- ]{2,}$~D', $_POST['naam'])){
$error['naam'] = 'U heeft geen geldige naam ingevuld.';
}
if(!ctype_print($_POST['email']) || !preg_match('~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~iD', $_POST['email'])){
$error['email'] = 'U heeft geen geldig emailadres ingevuld.';
}
// Checkt of de waarde in de array groter is dan '0'.
if(count($error)>0){
echo '<u>Om de volgende reden kan uw vraag helaas niet worden verwerkt:</u>';
echo '<ul>';
foreach($error as $msg){
echo '<li>'. $msg .'</li>';
}
echo '</ul>';
echo 'Klik op <a href="javascript:history.back(1)">terug</a> en vul alle velden in.';
}
else{
require("../connect_db.php");
$Object = 'test';
$Datum = date('d-m-Y');
$DatumTijd = strtotime($Datum);
$DatumFormat = date('Y-m-d',$DatumTijd);
$Query = "SELECT *, CONVERT(char(14), DatumControle,105) as DatumControle2 FROM Bewakingsdiensten WHERE ControleObject = '$Object' AND DatumControle > cast('$DatumFormat' as datetime) - 1 AND DatumControle < cast('$DatumFormat' as datetime) + 1 ORDER BY DatumControle desc";
$results = mssql_query($Query);
$rij = mssql_fetch_assoc( $results );
if(mssql_num_rows($results) > 0){
$resultaten_bewakingsdiensten = "<html><table><td>ControleObject:</td><td>".$rij['ControleObject']."</td></table></html>";
}
// Hier staat alles in wat per mail verzonden moet worden.
$mail_content = "Naam: ".$_POST['naam']."\nEmail: ".$_POST['email']."\n\n\nResultaten:\n\n".$resultaten_bewakingsdiensten;
if(mail($mail_naar,$mail_onderwerp,$mail_content,$mail_headers)){
echo 'De resultaten zijn succesvol verzonden naar '.$_POST['email'].'.';
echo '<a href="mail_resultaten.php">Keer terug</a>';
}
else{
echo 'De resultaten zijn niet verzonden, contacteer de beheerder.';
}
}
}
else{
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>" method="post">
<fieldset>
<legend>Met dit formulier kunt u de resultaten emailen.<br>
<br>
</legend>
<table width="288">
<tr>
<td width="128">Uw naam</td>
<td width="144"><input id="naam" type="text" name="naam"></td>
</tr>
<tr>
<td>Uw e-mailadres</td>
<td><input id="email" type="text" name="email"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" class="submit" value="Resultaten verzenden"></td>
</tr>
</table>
</fieldset>
</form>
<?php
}
?>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$mail_naar = $_POST['email'];
$mail_onderwerp = 'test';
$mail_headers = 'MIME-Version: 1.0' . "\r\n";
$mail_headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$mail_headers = 'From:'.$_POST['naam'].'<'.$_POST['email'].'>';
// Checkt of alle velden juist zijn ingevuld.
$error= array();
if(!ctype_print($_POST['naam']) || !preg_match('~^[a-zA-Z][a-zA-Z.\- ]{2,}$~D', $_POST['naam'])){
$error['naam'] = 'U heeft geen geldige naam ingevuld.';
}
if(!ctype_print($_POST['email']) || !preg_match('~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~iD', $_POST['email'])){
$error['email'] = 'U heeft geen geldig emailadres ingevuld.';
}
// Checkt of de waarde in de array groter is dan '0'.
if(count($error)>0){
echo '<u>Om de volgende reden kan uw vraag helaas niet worden verwerkt:</u>';
echo '<ul>';
foreach($error as $msg){
echo '<li>'. $msg .'</li>';
}
echo '</ul>';
echo 'Klik op <a href="javascript:history.back(1)">terug</a> en vul alle velden in.';
}
else{
require("../connect_db.php");
$Object = 'test';
$Datum = date('d-m-Y');
$DatumTijd = strtotime($Datum);
$DatumFormat = date('Y-m-d',$DatumTijd);
$Query = "SELECT *, CONVERT(char(14), DatumControle,105) as DatumControle2 FROM Bewakingsdiensten WHERE ControleObject = '$Object' AND DatumControle > cast('$DatumFormat' as datetime) - 1 AND DatumControle < cast('$DatumFormat' as datetime) + 1 ORDER BY DatumControle desc";
$results = mssql_query($Query);
$rij = mssql_fetch_assoc( $results );
if(mssql_num_rows($results) > 0){
$resultaten_bewakingsdiensten = "<html><table><td>ControleObject:</td><td>".$rij['ControleObject']."</td></table></html>";
}
// Hier staat alles in wat per mail verzonden moet worden.
$mail_content = "Naam: ".$_POST['naam']."\nEmail: ".$_POST['email']."\n\n\nResultaten:\n\n".$resultaten_bewakingsdiensten;
if(mail($mail_naar,$mail_onderwerp,$mail_content,$mail_headers)){
echo 'De resultaten zijn succesvol verzonden naar '.$_POST['email'].'.';
echo '<a href="mail_resultaten.php">Keer terug</a>';
}
else{
echo 'De resultaten zijn niet verzonden, contacteer de beheerder.';
}
}
}
else{
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>" method="post">
<fieldset>
<legend>Met dit formulier kunt u de resultaten emailen.<br>
<br>
</legend>
<table width="288">
<tr>
<td width="128">Uw naam</td>
<td width="144"><input id="naam" type="text" name="naam"></td>
</tr>
<tr>
<td>Uw e-mailadres</td>
<td><input id="email" type="text" name="email"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" class="submit" value="Resultaten verzenden"></td>
</tr>
</table>
</fieldset>
</form>
<?php
}
?>
Gewijzigd op 13/10/2010 09:47:45 door Bas IJzelendoorn
SanThe Nvt op 13/10/2010 08:40:38:
Je mailtje is ook helemaal niet html valid.
Denk ook aan email-injection.
http://phpwiki.santhe.nl/index.php/De_juiste_mailheaders
Denk ook aan email-injection.
http://phpwiki.santhe.nl/index.php/De_juiste_mailheaders
Ik dank u :)
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$mail_headers = 'From:'.$_POST['naam'].'<'.$_POST['email'].'>';
$mail_headers.= 'MIME-Version: 1.0'. PHP_EOL ;
$mail_headers.= 'Content-type: text/html; charset=iso-8859-1'. PHP_EOL ;
?>
$mail_headers = 'From:'.$_POST['naam'].'<'.$_POST['email'].'>';
$mail_headers.= 'MIME-Version: 1.0'. PHP_EOL ;
$mail_headers.= 'Content-type: text/html; charset=iso-8859-1'. PHP_EOL ;
?>
Gewijzigd op 13/10/2010 09:03:27 door Wouter OOP
De inhoud van From is niet correct. Zie de link.
SanThe Nvt op 13/10/2010 09:11:43:
De inhoud van From is niet correct. Zie de link.
$mail_headers = 'From:'.$_POST['naam'].'<'.$_POST['email'].'>'.PHP_EOL;
Zo?
Nee, bij de From hoort je eigen emailadres. Die van de bezoeker kan eventueel in de Reply-to.
SanThe Nvt op 13/10/2010 08:40:38:
Je mailtje is ook helemaal niet html valid.
Let wel op dat je heel beperkt bent in de html van een e-mail/nieuwsbrief
Zo moet het uit tabellen bestaan en niet uit divs (want float word niet ondersteund in de meeste e-mail programma's etc) paddings,margins,backgrounds etc worden ook heel slecht ondersteund vooral door outlook 2007