html mail sturen naar emails uit databank
Ik wil een mail verzenden na het invullen van een online formulier naar alle emailadressen in een bepaalde databank maar krijg geen resultaat, enkel een wit scherm...
De velden van het formulier zijn txttitel en txtinhoud, zoals in de code vermeld is.
Dit is mijn code
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
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
<?php
$to = '[email protected]';
$subject = 'Nieuwsbrief';
// message
$message = "<html>".
"<head>"."<title>Nieuwsbrief</title>".
"</head>"."<body>".
"<center>".
"<img src='http://www.xxxxxxxxxx.be/images/logo.png' style='padding: 30px 0 20px 0;' />".
"</center>".
"<center>".
"<img src='http://www.xxxxxxxxxx.be/images/line.png' style='padding-bottom: 20px;' />".
"</center>".
"<h1 style='margin:10px 15px 5px 15px;font-family:Lucida Grande, Verdana, Arial, sans-serif;font-size:20px;color:#666;text-shadow:1px 1px 1px #cacaca;padding-bottom:5px;border-bottom: dotted 1px;'>".
"{$_POST['txttitel']}".
"</h1>".
"<p>".
"{$_POST['txtinhoud']}".
"</p>".
."</body>"."</html>";
//get email list
//open database connection
$webspace='xxxxxxxxxx';
$username = "xxxxxxxxxx";
$password = "xxxxxxxxxx";
$database = "xxxxxxxxxx";
//connect to database
$link=mysql_connect($webspace,$username,$password);
@mysql_select_db($database) or die("<b>Unable to specified database</b>");
$query="SELECT fldemail FROM tblnieuwsbrief";
$result=mysql_query($query) or die('Error, query failed');
mysql_close($link);
$row=1;
$numrows=mysql_num_rows($result);
$bccfield="Bcc: ". mysql_result($result,0,"fldemail");
while($row<$numrows)
{
$email=mysql_result($result,$row,"fldemail");
$bccfield .= "," . $email; //seperate by comma
$row++;
}
$bccfield .= "\r\n";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= $bccfield;
// Mail it
mail($to, $subject, $message, $headers);
?>
$to = '[email protected]';
$subject = 'Nieuwsbrief';
// message
$message = "<html>".
"<head>"."<title>Nieuwsbrief</title>".
"</head>"."<body>".
"<center>".
"<img src='http://www.xxxxxxxxxx.be/images/logo.png' style='padding: 30px 0 20px 0;' />".
"</center>".
"<center>".
"<img src='http://www.xxxxxxxxxx.be/images/line.png' style='padding-bottom: 20px;' />".
"</center>".
"<h1 style='margin:10px 15px 5px 15px;font-family:Lucida Grande, Verdana, Arial, sans-serif;font-size:20px;color:#666;text-shadow:1px 1px 1px #cacaca;padding-bottom:5px;border-bottom: dotted 1px;'>".
"{$_POST['txttitel']}".
"</h1>".
"<p>".
"{$_POST['txtinhoud']}".
"</p>".
."</body>"."</html>";
//get email list
//open database connection
$webspace='xxxxxxxxxx';
$username = "xxxxxxxxxx";
$password = "xxxxxxxxxx";
$database = "xxxxxxxxxx";
//connect to database
$link=mysql_connect($webspace,$username,$password);
@mysql_select_db($database) or die("<b>Unable to specified database</b>");
$query="SELECT fldemail FROM tblnieuwsbrief";
$result=mysql_query($query) or die('Error, query failed');
mysql_close($link);
$row=1;
$numrows=mysql_num_rows($result);
$bccfield="Bcc: ". mysql_result($result,0,"fldemail");
while($row<$numrows)
{
$email=mysql_result($result,$row,"fldemail");
$bccfield .= "," . $email; //seperate by comma
$row++;
}
$bccfield .= "\r\n";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= $bccfield;
// Mail it
mail($to, $subject, $message, $headers);
?>
Heb echt geen idee wat ik hiermee moet aanvangen
Bedankt alvast
Run je het wel op een mail server? of op je lokale machine?
de webpagina waar het script op staat, staat op one.com hosting
krijg nog steeds niets anders te zien dan enkel een witte pagina, zonder meer helaas
Gewijzigd op 15/12/2011 17:33:57 door - Ariën -
In het script wat hierboven staat zit geen enkele echo, dus daar zul je niks van op het scherm krijgen.
heb het @'je ook opgemerkt en weggedaan, 3 echos in gezet. Resultaat blijft een wit scherm, en SanThe, klopt idd wat je zegt, maar eronder staat nog een klein deel html dat ik niet heb gekopieerd, o.a. de tekst "Nieuwsbrief verzonden" maar dat krijg ik dus ook niet te zien
Was het bij one.com dat je foutmeldingen niet zelf aan moest zetten in een control panel?
Toevoeging op 15/12/2011 19:29:19:
blijft me echt een raadsel, zie zelf echt niets verkeerds
Toevoeging op 15/12/2011 19:42:55:
moest het handig zijn om te weten, vanuit dit formulier wordt gelinkt naar de php
<form name="formulier" action="send.php" method="POST">
laat je code eens zien waar je echo's hebt toegevoegd?
Of natuurlijk een punt teveel.
Regel 22: "</p>".
Tegel 23: ."</body>"."</html>";
Toevoeging op 15/12/2011 20:05:30:
Veel beter is dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$message = '<html>
<head><title>Nieuwsbrief</title>
</head>
<body>
<center><img src="http://www.xxxxxxxxxx.be/images/logo.png" style="padding: 30px 0 20px 0;" />
</center>
<center><img src="http://www.xxxxxxxxxx.be/images/line.png" style="padding-bottom: 20px;" />
</center>
<h1 style="margin:10px 15px 5px 15px;font-family:Lucida Grande, Verdana, Arial, sans-serif;font-size:20px;color:#666;text-shadow:1px 1px 1px #cacaca;padding-bottom:5px;border-bottom: dotted 1px;">
' . $_POST['txttitel'] . '
</h1>
<p>' . $_POST['txtinhoud'] . '</p>
</body></html>';
?>
$message = '<html>
<head><title>Nieuwsbrief</title>
</head>
<body>
<center><img src="http://www.xxxxxxxxxx.be/images/logo.png" style="padding: 30px 0 20px 0;" />
</center>
<center><img src="http://www.xxxxxxxxxx.be/images/line.png" style="padding-bottom: 20px;" />
</center>
<h1 style="margin:10px 15px 5px 15px;font-family:Lucida Grande, Verdana, Arial, sans-serif;font-size:20px;color:#666;text-shadow:1px 1px 1px #cacaca;padding-bottom:5px;border-bottom: dotted 1px;">
' . $_POST['txttitel'] . '
</h1>
<p>' . $_POST['txtinhoud'] . '</p>
</body></html>';
?>
Nog beter is CSS gebruiken.
try { } catch { } blok. In de catch kun je de fout dan tonen. (zie ook http://www.codeunit.co.za/2010/01/16/php-simple-try-catch-example/)
Andreas Anastasiades op 15/12/2011 15:37:20:
Hallo, ik ben nieuw in het wereldje van php ...
F Loogman op 15/12/2011 22:35:12:
Dus je kunt het ook proberen met een
try { } catch { } blok.
try { } catch { } blok.
Ik zou een beginner nog niet laten beginnen aan exceptions.
Gewijzigd op 15/12/2011 22:38:43 door - Ariën -
Het voorbeeld geeft goed aan hoe het moet. En hij kan altijd nog beginnen met de BCC en bijbehorende MySQL queries te verwijderen, om het eenvoudig te houden :-)
- SanThe - op 15/12/2011 19:59:16:
Of natuurlijk een punt teveel.
Regel 22: "</p>".
Tegel 23: ."</body>"."</html>";
Regel 22: "</p>".
Tegel 23: ."</body>"."</html>";
Het komt door deze twee punten achter elkaar,
Da's inderdaad simpeler op te lossen. :-)
over een CSS gebruiken, daar had ik de commentaar gekregen dat dit mogelijk niet zou werken als het een externe stylesheet zou zijn omdat het gemaild wordt, dus heb ik alle stijlelementen inline geplaatst.
En F Loogman, de link over try en catch ga ik zeker bekijken, ziet er mij interessant uit. Dan kan ik mijn kennis van php een beetje verruimen :)
Bedankt!