Contactformulier
Ik heb ooit een website gebouwd, met daarop een contactformulier, die verzond met de mail() functie..
Dit bleek nogal een gezeur, het werkte vaak niet goed, en als de mail aankwam, die kwam die meestal bij de ongewenste post terecht.
Toen is me hier toentertijd aangeraden om iets van PHPmailer of Swiftmail (weet niet eens of dat bestaat, misschien herinner ik me het verkeerd) te gebruiken, i.p.v. de mail() functie..
Dit keer zou ik wel graag een goed werkend contactformulier maken..
Zou iemand mij in de goede richting kunnen duwen qua verzending van de mail? De rest van het script heb ik al..
Het oude script zag er zo uit:
contact.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
ob_start();
session_start();
// Config Gedeelte
$cfg['url'] = "invullen";// Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg['naam'] = "invullen"; // Webmaster naam
$cfg['email'] = "invullen"; // Webmaster E-mail
$cfg['spam'] = 5; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$cfg['text'] = TRUE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['input'] = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['HTML'] = TRUE; // Een HTML email ( TRUE voor aan, FALSE voor uit )
$cfg['CAPTCHA'] = TRUE; // CAPTCHA ( TRUE voor aan, FALSE voor uit )
// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail($email)
{
if(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email))
{
return TRUE;
}
return FALSE;
}
$formulier = TRUE;
if(!isset($_COOKIE['formulier']))
{
if(isset($_POST['wis']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
{
foreach($_POST as $key => $value)
{
unset($value);
}
header("Location: ".$_SERVER['PHP_SELF']."");
}
if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
{
$aFout = array();
$naam = trim($_POST['naam']);
$email = trim($_POST['email']);
$onderwerp = trim($_POST['onderwerp']);
$bericht = trim($_POST['bericht']);
if($cfg['CAPTCHA'])
{
$code = $_POST['code'];
}
if(empty($naam) || (strlen($naam) < 3) || eregi("[<>]", $naam) )
{
$aFout[] = "Er is geen naam ingevuld.";
unset($naam);
$fout['text']['naam'] = TRUE;
$fout['input']['naam'] = TRUE;
}
if(empty($email))
{
$aFout[] = "Er is geen e-mail adres ingevuld.";
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
//elseif(checkmail($email) == 0)
// Wanneer je PHP 5.2 > gebruikt
//elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$aFout[] = "Er is geen correct e-mail adres ingevuld.";
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
if(empty($onderwerp))
{
$aFout[] = "Er is geen onderwerp ingevuld.";
unset($onderwerp);
$fout['text']['onderwerp'] = TRUE;
$fout['input']['onderwerp'] = TRUE;
}
if(empty($bericht))
{
$aFout[] = "Er is geen bericht ingevuld.";
unset($bericht);
$fout['text']['bericht'] = TRUE;
$fout['input']['bericht'] = TRUE;
}
if($cfg['CAPTCHA'])
{
if(strtoupper($code) != $_SESSION['captcha_code'])
{
$aFout[] = "Er is geen correcte code ingevuld.";
$fout['text']['code'] = TRUE;
$fout['input']['code'] = TRUE;
}
}
if(!$cfg['text'])
{
unset($fout['text']);
}
if(!$cfg['input'])
{
unset($fout['input']);
}
if(!empty( $aFout ))
{
$errors = '
<div id="errors">
<ul>';
foreach($aFout as $sFout)
{
$errors .= " <li>".$sFout."</li>\n";
}
$errors .= "</ul>
</div>";
}
else
{
$formulier = FALSE;
if($cfg['HTML'])
{
//Headers
$headers = "From: $email\r\n";
$headers .= "Return-Path: $email\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$bericht = '
<html>
<head>
<title>
</title>
</head>
<body>
<font face="calibri, arial">
<br />
<b>Naam:</b> '.$naam.'<br />
<b>Email:</b> <a href=\"mailto:'.$email.'\">'.$email.'</a><br />
<b>Onderwerp:</b> '.$onderwerp.'<br />
<b>Bericht:</b><br />
'.$bericht.'
<br />
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
<b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
<b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
</font>
</body>
</html>';
}
else
{
$bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
//Headers
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Contact Formulier <' . $cfg['email'] . ">\r\n";
$headers .= 'Reply-To: ' . $naam . ' <' . $email . ">\r\n";
$headers .= 'Return-Path: Mail-Error <' . $cfg['email'] . ">\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
// Bericht
$message = "Naam: ".$naam." \n";
$message .= "E-mail: ".$email." \n";
$message .= "Bericht:\n".$bericht_wrap." \n ";
$message .= " \n ";
$message .= "Datum: ".date("d-m-Y H:i:s")." \n";
$message .= "------------------------------------------------------- \n ";
$message .= "IP: ".$_SERVER['REMOTE_ADDR']." \n ";
$message .= "Host: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])." \n ";
}
if(mail($cfg['email'], "[Contact] ".$onderwerp, $bericht, $headers))
{
if(isset($_POST['stuurkopie']))
{
$headers = "From: \"Contact Formulier\" <".$email.">\r\n";
$headers .= "Reply-To: \"".$naam."\" <".$email.">\n";
$headers .= "Return-Path: Mail-Error <".$email.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
mail($email, "[Contact] ".$onderwerp, $bericht, $headers);
}
unset($naam, $email, $onderwerp, $bericht);
setcookie("formulier", 1, time() + ( $cfg['spam'] * 60 ) );
echo "
<body bgcolor='#D8DDED'><p><font face='calibri, arial' color='#4467C7'>
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.<br /><br />
U wordt nu doorgestuurd naar de homepagina.<br /><br />
Met vriendelijke groeten,<br />
<b>".$cfg['naam']."</b>
</font></p></body>
";
}
else
{
echo "Er is een fout opgetreden bij het verzenden van de email";
}
header("refresh:7;url=".$cfg['url']."");
}
}
if($formulier)
{
?>
<html>
<head>
<link href="contact.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="nl" />
</head>
<body bgcolor="#D8DDED">
<p>Welkom op de contactpagina!
Als u vragen en/of opmerkingen heeft, kunt u het ons via dit formulier laten weten.
Vul alle velden in en klik op verzenden.</p>
<p><b>Let op:</b> U bent ook verplicht om de code in te vullen die weergegeven wordt.
Dit is voor uw veiligheid. Als u deze code niet (correct) invult, wordt de mail niet verzonden.</p>
<div id="form">
<?php
if(isset($errors)) {
echo $errors;
}
?>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<p>
<label <?php if(isset($fout['text']['naam'])) { echo 'class="fout"'; } ?>>Naam:</label>
<input type="text" id="naam" name="naam" maxlength="30" <?php if(isset($fout['input']['naam'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($naam)) { echo stripslashes($naam); } ?>" /><br />
<label <?php if(isset($fout['text']['email'])) { echo 'class="fout"'; } ?>>Email:</label>
<input type="text" id="email" name="email" maxlength="255" <?php if(isset($fout['input']['email'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($email)) { echo stripslashes($email); } ?>" /><br />
<label <?php if(isset($fout['text']['onderwerp'])) { echo 'class="fout"'; } ?>>Onderwerp:</label>
<input type="text" id="onderwerp" name="onderwerp" maxlength="40" <?php if(isset($fout['input']['onderwerp'])) { echo 'class="fout'; } ?> value="<?php if (!empty($onderwerp)) { echo stripslashes($onderwerp); } ?>" /><br />
<label <?php if(isset($fout['text']['bericht'])) { echo 'class="fout"'; } ?>>Bericht:</label>
<textarea id="bericht" name="bericht" <?php if(isset($fout['input']['bericht'])) { echo 'class="fout"'; } ?> cols="35" rows="6"><?php if (!empty($bericht)) { echo stripslashes($bericht); } ?></textarea><br />
<?php
if($cfg['CAPTCHA'])
{
?>
<label <?php if(isset($fout['text']['code'])) { echo 'class="fout"'; } ?>>Code:</label>
<img src="captcha/captcha.php" align="top" alt="" />
<input type="text" id="code" name="code" maxlength="4" size="4"<?php if(isset($fout['input']['code'])) { echo 'class="captcha fout"'; } ?> /><br />
<?php
}
?>
<label> </label>
<input type="submit" id="verzenden" name="verzenden" value="Verzenden" />
<input type="reset" id="wis" name="wis" value="Wis velden" />
</p>
</form>
</div>
</body>
</html>
<?php
}
}
else
{
echo "
<p>
U kunt maar eens in de ".$cfg['spam']." minuten een e-mail versturen!<br />
U wordt nu automatisch doorgestuurd.
</p>";
header("refresh:7;url=".$cfg['url']."");
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
ob_start();
session_start();
// Config Gedeelte
$cfg['url'] = "invullen";// Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$cfg['naam'] = "invullen"; // Webmaster naam
$cfg['email'] = "invullen"; // Webmaster E-mail
$cfg['spam'] = 5; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$cfg['text'] = TRUE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['input'] = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$cfg['HTML'] = TRUE; // Een HTML email ( TRUE voor aan, FALSE voor uit )
$cfg['CAPTCHA'] = TRUE; // CAPTCHA ( TRUE voor aan, FALSE voor uit )
// Hieronder niks meer veranderen
// E-mail Checker / Validator
function checkmail($email)
{
if(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email))
{
return TRUE;
}
return FALSE;
}
$formulier = TRUE;
if(!isset($_COOKIE['formulier']))
{
if(isset($_POST['wis']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
{
foreach($_POST as $key => $value)
{
unset($value);
}
header("Location: ".$_SERVER['PHP_SELF']."");
}
if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST"))
{
$aFout = array();
$naam = trim($_POST['naam']);
$email = trim($_POST['email']);
$onderwerp = trim($_POST['onderwerp']);
$bericht = trim($_POST['bericht']);
if($cfg['CAPTCHA'])
{
$code = $_POST['code'];
}
if(empty($naam) || (strlen($naam) < 3) || eregi("[<>]", $naam) )
{
$aFout[] = "Er is geen naam ingevuld.";
unset($naam);
$fout['text']['naam'] = TRUE;
$fout['input']['naam'] = TRUE;
}
if(empty($email))
{
$aFout[] = "Er is geen e-mail adres ingevuld.";
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
//elseif(checkmail($email) == 0)
// Wanneer je PHP 5.2 > gebruikt
//elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$aFout[] = "Er is geen correct e-mail adres ingevuld.";
unset($email);
$fout['text']['email'] = TRUE;
$fout['input']['email'] = TRUE;
}
if(empty($onderwerp))
{
$aFout[] = "Er is geen onderwerp ingevuld.";
unset($onderwerp);
$fout['text']['onderwerp'] = TRUE;
$fout['input']['onderwerp'] = TRUE;
}
if(empty($bericht))
{
$aFout[] = "Er is geen bericht ingevuld.";
unset($bericht);
$fout['text']['bericht'] = TRUE;
$fout['input']['bericht'] = TRUE;
}
if($cfg['CAPTCHA'])
{
if(strtoupper($code) != $_SESSION['captcha_code'])
{
$aFout[] = "Er is geen correcte code ingevuld.";
$fout['text']['code'] = TRUE;
$fout['input']['code'] = TRUE;
}
}
if(!$cfg['text'])
{
unset($fout['text']);
}
if(!$cfg['input'])
{
unset($fout['input']);
}
if(!empty( $aFout ))
{
$errors = '
<div id="errors">
<ul>';
foreach($aFout as $sFout)
{
$errors .= " <li>".$sFout."</li>\n";
}
$errors .= "</ul>
</div>";
}
else
{
$formulier = FALSE;
if($cfg['HTML'])
{
//Headers
$headers = "From: $email\r\n";
$headers .= "Return-Path: $email\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$bericht = '
<html>
<head>
<title>
</title>
</head>
<body>
<font face="calibri, arial">
<br />
<b>Naam:</b> '.$naam.'<br />
<b>Email:</b> <a href=\"mailto:'.$email.'\">'.$email.'</a><br />
<b>Onderwerp:</b> '.$onderwerp.'<br />
<b>Bericht:</b><br />
'.$bericht.'
<br />
<br />
<br />
--------------------------------------------------------------------------<br />
<b>Datum:</b> '.date("d-m-Y @ H:i:s").'<br />
<b>IP:</b> <a href=\"http://sunny.nic.com/cgi-bin/whois?domain='.$_SERVER['REMOTE_ADDR'].'\">'.$_SERVER['REMOTE_ADDR'].'</a><br />
<b>Host:</b> '.gethostbyaddr($_SERVER['REMOTE_ADDR']).'<br />
</font>
</body>
</html>';
}
else
{
$bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
//Headers
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Contact Formulier <' . $cfg['email'] . ">\r\n";
$headers .= 'Reply-To: ' . $naam . ' <' . $email . ">\r\n";
$headers .= 'Return-Path: Mail-Error <' . $cfg['email'] . ">\r\n";
$headers .= "X-MSMail-Priority: Normal\r\n";
$headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
// Bericht
$message = "Naam: ".$naam." \n";
$message .= "E-mail: ".$email." \n";
$message .= "Bericht:\n".$bericht_wrap." \n ";
$message .= " \n ";
$message .= "Datum: ".date("d-m-Y H:i:s")." \n";
$message .= "------------------------------------------------------- \n ";
$message .= "IP: ".$_SERVER['REMOTE_ADDR']." \n ";
$message .= "Host: ".gethostbyaddr($_SERVER['REMOTE_ADDR'])." \n ";
}
if(mail($cfg['email'], "[Contact] ".$onderwerp, $bericht, $headers))
{
if(isset($_POST['stuurkopie']))
{
$headers = "From: \"Contact Formulier\" <".$email.">\r\n";
$headers .= "Reply-To: \"".$naam."\" <".$email.">\n";
$headers .= "Return-Path: Mail-Error <".$email.">\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
mail($email, "[Contact] ".$onderwerp, $bericht, $headers);
}
unset($naam, $email, $onderwerp, $bericht);
setcookie("formulier", 1, time() + ( $cfg['spam'] * 60 ) );
echo "
<body bgcolor='#D8DDED'><p><font face='calibri, arial' color='#4467C7'>
Uw bericht is succesvol verzonden, er word zo snel mogelijk gereageerd.<br /><br />
U wordt nu doorgestuurd naar de homepagina.<br /><br />
Met vriendelijke groeten,<br />
<b>".$cfg['naam']."</b>
</font></p></body>
";
}
else
{
echo "Er is een fout opgetreden bij het verzenden van de email";
}
header("refresh:7;url=".$cfg['url']."");
}
}
if($formulier)
{
?>
<html>
<head>
<link href="contact.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="nl" />
</head>
<body bgcolor="#D8DDED">
<p>Welkom op de contactpagina!
Als u vragen en/of opmerkingen heeft, kunt u het ons via dit formulier laten weten.
Vul alle velden in en klik op verzenden.</p>
<p><b>Let op:</b> U bent ook verplicht om de code in te vullen die weergegeven wordt.
Dit is voor uw veiligheid. Als u deze code niet (correct) invult, wordt de mail niet verzonden.</p>
<div id="form">
<?php
if(isset($errors)) {
echo $errors;
}
?>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<p>
<label <?php if(isset($fout['text']['naam'])) { echo 'class="fout"'; } ?>>Naam:</label>
<input type="text" id="naam" name="naam" maxlength="30" <?php if(isset($fout['input']['naam'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($naam)) { echo stripslashes($naam); } ?>" /><br />
<label <?php if(isset($fout['text']['email'])) { echo 'class="fout"'; } ?>>Email:</label>
<input type="text" id="email" name="email" maxlength="255" <?php if(isset($fout['input']['email'])) { echo 'class="fout"'; } ?> value="<?php if (!empty($email)) { echo stripslashes($email); } ?>" /><br />
<label <?php if(isset($fout['text']['onderwerp'])) { echo 'class="fout"'; } ?>>Onderwerp:</label>
<input type="text" id="onderwerp" name="onderwerp" maxlength="40" <?php if(isset($fout['input']['onderwerp'])) { echo 'class="fout'; } ?> value="<?php if (!empty($onderwerp)) { echo stripslashes($onderwerp); } ?>" /><br />
<label <?php if(isset($fout['text']['bericht'])) { echo 'class="fout"'; } ?>>Bericht:</label>
<textarea id="bericht" name="bericht" <?php if(isset($fout['input']['bericht'])) { echo 'class="fout"'; } ?> cols="35" rows="6"><?php if (!empty($bericht)) { echo stripslashes($bericht); } ?></textarea><br />
<?php
if($cfg['CAPTCHA'])
{
?>
<label <?php if(isset($fout['text']['code'])) { echo 'class="fout"'; } ?>>Code:</label>
<img src="captcha/captcha.php" align="top" alt="" />
<input type="text" id="code" name="code" maxlength="4" size="4"<?php if(isset($fout['input']['code'])) { echo 'class="captcha fout"'; } ?> /><br />
<?php
}
?>
<label> </label>
<input type="submit" id="verzenden" name="verzenden" value="Verzenden" />
<input type="reset" id="wis" name="wis" value="Wis velden" />
</p>
</form>
</div>
</body>
</html>
<?php
}
}
else
{
echo "
<p>
U kunt maar eens in de ".$cfg['spam']." minuten een e-mail versturen!<br />
U wordt nu automatisch doorgestuurd.
</p>";
header("refresh:7;url=".$cfg['url']."");
}
?>
Alvast bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$headers = "From: Voornaam Achternaam <[email protected]>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Reply-To: ".$fname." ".$lname." <".$email.">\r\n";
$message = "Someone tried to contact you! ";
if (@mail($mail,$subject,$message,$headers)) {
De mail is goed verstuurd
}
else {
De mail is niet goed verstuurd
}
?>
$headers = "From: Voornaam Achternaam <[email protected]>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Reply-To: ".$fname." ".$lname." <".$email.">\r\n";
$message = "Someone tried to contact you! ";
if (@mail($mail,$subject,$message,$headers)) {
De mail is goed verstuurd
}
else {
De mail is niet goed verstuurd
}
?>
Toch bedankt!
Swiftmailer.
De vraag is nu:
Hoe gebruik ik Swiftmailer in bovenstaand script?
Of moet ik nu een volledig nieuw script maken..
Ik lees nu namelijk dit in de Swiftmailer documentatie:
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
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
<?php
require_once 'lib/swift_required.php';
//Create the message
$message = Swift_Message::newInstance()
//Give the message a subject
->setSubject('Your subject')
//Set the From address with an associative array
->setFrom(array('[email protected]' => 'John Doe'))
//Set the To addresses with an associative array
->setTo(array('[email protected]', '[email protected]' => 'A name'))
//Give it a body
->setBody('Here is the message itself')
//And optionally an alternative body
->addPart('<q>Here is the message itself</q>', 'text/html')
//Optionally add any attachments
->attach(Swift_Attachment::fromPath('my-document.pdf'))
;
?>
require_once 'lib/swift_required.php';
//Create the message
$message = Swift_Message::newInstance()
//Give the message a subject
->setSubject('Your subject')
//Set the From address with an associative array
->setFrom(array('[email protected]' => 'John Doe'))
//Set the To addresses with an associative array
->setTo(array('[email protected]', '[email protected]' => 'A name'))
//Give it a body
->setBody('Here is the message itself')
//And optionally an alternative body
->addPart('<q>Here is the message itself</q>', 'text/html')
//Optionally add any attachments
->attach(Swift_Attachment::fromPath('my-document.pdf'))
;
?>
Zit ik op de goede weg?
edit:
Volgens mij niet, want ik wil een contactformulier maken.. Geen apart bericht..
Gewijzigd op 01/01/1970 01:00:00 door Tom C
Lees gewoon inderdaad goed de documentatie door.
Want ik vind Swiftmailer toch iets te 'advanced' voor mij. Zelfs nu ik de documentatie lees. Ik heb totaal geen idee hoe ik dit in mijn script wil verwerken..
Ik gebruik zelf heel af en toe mail(). Voornamelijk om te testen.
Hij werkt prima en er komt niet in spam.
Je moet zorgen dat je de juiste headers meestuurt, dat is zeer belangerijk. Google anders eens op "php mail headers" of iets dergelijks.
Overigens is het way too much code.
Probeer zoiezo al je functies en config te includen, dat scheelt al een stuk. En voor de rest zou ik zeggen, houd het kort maar krachtig.
Maakt het je ook makkelijker om fouten te vinden eventueel.
Gewijzigd op 01/01/1970 01:00:00 door Steven Hack
Dat die van jou niet in de spam komt kan met 100 andere redenen te maken hebben.
Ik had het volgende script gevonden:
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$aErrors = array();
$_SESSION['errors'] = array();
$aFormuliervelden = array (
'naam',
'email',
'bericht'
);
foreach($aFormuliervelden as $sVeld)
{
if(isset($_POST[$sVeld]))
{
$sValue = trim($_POST[$sVeld]);
if(empty($sValue))
{
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
$_SESSION['errors'][$sVeld] = true;
}
elseif($sVeld == 'email')
{
if(!filter_var($sValue, FILTER_VALIDATE_EMAIL))
{
$aErrors[] = 'Je hebt geen geldig email adres ingevuld!';
$_SESSION['errors'][$sVeld] = true;
}
}
$_SESSION['input'][$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Er ontbreekt een gegeven';
}
}
if(empty($aErrors))
{
try
{
require_once '../lib/swift_required.php';
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift.php";
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift/SmtpTransport.php";
/* De SMTP server die gebruikt wordt om de mail te verzenden, vul hier je eigen server in! */
$oSmtp = new Swift_Connection_SMTP('smtp.mijndomein.nl', 26);
/* Eventuele logingegevens voor de server kun je hieronder kwijt: */
$oSmtp->setUsername('*****');
$oSmtp->setPassword('******');
$oSwift = new Swift($oSmtp);
// Verander hier het emailadres van de ontvanger
$oTo = new Swift_Address('[email protected]');
$oFrom = new Swift_Address($_SESSION['input']['email'], $_SESSION['input']['naam']);
$sSubject = 'Contactbericht van '.$_SESSION['input']['naam'];
$sMessage = '<html>
<head>
<style type="text/css">
body { font-family: "Verdana"; }
h1 { font-size: 14px; }
p { font-size: 11px; }
</style>
</head>
<body>
<h1>Contactbericht</h1>
<p>Afzender: '.htmlentities($_SESSION['input']['naam']).'</p>
<p>'.htmlentities($_SESSION['input']['bericht']).'</p>
</body>
</html>';
$oMessage = new Swift_Message($sSubject, $sMessage, 'text/html');
/**
* In het voorbeeld is het verzenden uitgeschakeld!
* Uncomment de regels hieronder om het verzenden te activeren.
**/
$oSwift->send($oMessage, $oTo, $oFrom);
$aContent[] = 'Je bericht is succesvol verzonden!';
//$aContent[] = 'In dit voorbeeld wordt geen mail verzonden. In principe zou dat nu wel succesvol gelukt zijn!';
$_SESSION['input'] = array();
}
catch(Swift_ConnectionException $e)
{
$aErrors[] = 'Er is een fout opgetreden bij het verzenden van het bericht, probeer het later nog eens.';
//$aErrors[] = 'Deze fout is wellicht opgetreden omdat dit een voorbeeld is...';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Jorendewit.nl - PHP Scripts - Contactformulier met Swift Mailer</title>
<link rel="stylesheet" href="../styles/default.css" type="text/css" media="screen" />
<style type="text/css">
input.error, textarea.error {
border: 2px solid #FF0000;
}
</style>
</head>
<body>
<div id="wrap">
<p class="none small align-right"><a href="/view/38/"><-- Terug naar Scripts</a></p>
<h1>Contactformulier met Swift Mailer</h1>
<div id="info">
<p>PHP versie: >= 5</p>
</div>
<?php
// Weergeven van meldingen uit het PHP script.
if(!empty($aErrors))
{
echo '<ul>';
foreach($aErrors as $sError)
{
echo '<li>'.$sError.'</li>';
}
echo '</ul>';
}
elseif(isset($aContent))
{
foreach($aContent as $sLine)
{
echo '<p>'.$sLine.'</p>';
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="contact">
<p>
<label class="field" for="naam">Naam:</label>
<input type="text"
id="naam"
name="naam"
value="<?php echo isset($_SESSION['input']['naam']) ? $_SESSION['input']['naam'] : ''; ?>"
class="<?php echo (isset($_SESSION['errors']['naam']) && $_SESSION['errors']['naam'] == 'true') ? 'error' : ''; ?>"
/>
</p>
<p>
<label class="field" for="email">Email adres:</label>
<input type="text"
id="email"
name="email"
value="<?php echo isset($_SESSION['input']['email']) ? $_SESSION['input']['email'] : ''; ?>"
class="<?php echo (isset($_SESSION['errors']['email']) && $_SESSION['errors']['email'] == 'true') ? 'error' : ''; ?>"
/>
</p>
<p>
<label class="field" for="bericht">Bericht:</label>
<textarea
id="bericht"
name="bericht"
class="none <?php echo (isset($_SESSION['errors']['bericht']) && $_SESSION['errors']['bericht'] == 'true') ? 'error' : ''; ?>"
cols="70"
rows="10"><?php echo isset($_SESSION['input']['bericht']) ? $_SESSION['input']['bericht'] : ''; ?></textarea>
</p>
<p>
<input type="submit" value="Verzenden" />
</p>
</form>
</div>
</body>
</html>
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$aErrors = array();
$_SESSION['errors'] = array();
$aFormuliervelden = array (
'naam',
'email',
'bericht'
);
foreach($aFormuliervelden as $sVeld)
{
if(isset($_POST[$sVeld]))
{
$sValue = trim($_POST[$sVeld]);
if(empty($sValue))
{
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
$_SESSION['errors'][$sVeld] = true;
}
elseif($sVeld == 'email')
{
if(!filter_var($sValue, FILTER_VALIDATE_EMAIL))
{
$aErrors[] = 'Je hebt geen geldig email adres ingevuld!';
$_SESSION['errors'][$sVeld] = true;
}
}
$_SESSION['input'][$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Er ontbreekt een gegeven';
}
}
if(empty($aErrors))
{
try
{
require_once '../lib/swift_required.php';
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift.php";
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift/SmtpTransport.php";
/* De SMTP server die gebruikt wordt om de mail te verzenden, vul hier je eigen server in! */
$oSmtp = new Swift_Connection_SMTP('smtp.mijndomein.nl', 26);
/* Eventuele logingegevens voor de server kun je hieronder kwijt: */
$oSmtp->setUsername('*****');
$oSmtp->setPassword('******');
$oSwift = new Swift($oSmtp);
// Verander hier het emailadres van de ontvanger
$oTo = new Swift_Address('[email protected]');
$oFrom = new Swift_Address($_SESSION['input']['email'], $_SESSION['input']['naam']);
$sSubject = 'Contactbericht van '.$_SESSION['input']['naam'];
$sMessage = '<html>
<head>
<style type="text/css">
body { font-family: "Verdana"; }
h1 { font-size: 14px; }
p { font-size: 11px; }
</style>
</head>
<body>
<h1>Contactbericht</h1>
<p>Afzender: '.htmlentities($_SESSION['input']['naam']).'</p>
<p>'.htmlentities($_SESSION['input']['bericht']).'</p>
</body>
</html>';
$oMessage = new Swift_Message($sSubject, $sMessage, 'text/html');
/**
* In het voorbeeld is het verzenden uitgeschakeld!
* Uncomment de regels hieronder om het verzenden te activeren.
**/
$oSwift->send($oMessage, $oTo, $oFrom);
$aContent[] = 'Je bericht is succesvol verzonden!';
//$aContent[] = 'In dit voorbeeld wordt geen mail verzonden. In principe zou dat nu wel succesvol gelukt zijn!';
$_SESSION['input'] = array();
}
catch(Swift_ConnectionException $e)
{
$aErrors[] = 'Er is een fout opgetreden bij het verzenden van het bericht, probeer het later nog eens.';
//$aErrors[] = 'Deze fout is wellicht opgetreden omdat dit een voorbeeld is...';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Jorendewit.nl - PHP Scripts - Contactformulier met Swift Mailer</title>
<link rel="stylesheet" href="../styles/default.css" type="text/css" media="screen" />
<style type="text/css">
input.error, textarea.error {
border: 2px solid #FF0000;
}
</style>
</head>
<body>
<div id="wrap">
<p class="none small align-right"><a href="/view/38/"><-- Terug naar Scripts</a></p>
<h1>Contactformulier met Swift Mailer</h1>
<div id="info">
<p>PHP versie: >= 5</p>
</div>
<?php
// Weergeven van meldingen uit het PHP script.
if(!empty($aErrors))
{
echo '<ul>';
foreach($aErrors as $sError)
{
echo '<li>'.$sError.'</li>';
}
echo '</ul>';
}
elseif(isset($aContent))
{
foreach($aContent as $sLine)
{
echo '<p>'.$sLine.'</p>';
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="contact">
<p>
<label class="field" for="naam">Naam:</label>
<input type="text"
id="naam"
name="naam"
value="<?php echo isset($_SESSION['input']['naam']) ? $_SESSION['input']['naam'] : ''; ?>"
class="<?php echo (isset($_SESSION['errors']['naam']) && $_SESSION['errors']['naam'] == 'true') ? 'error' : ''; ?>"
/>
</p>
<p>
<label class="field" for="email">Email adres:</label>
<input type="text"
id="email"
name="email"
value="<?php echo isset($_SESSION['input']['email']) ? $_SESSION['input']['email'] : ''; ?>"
class="<?php echo (isset($_SESSION['errors']['email']) && $_SESSION['errors']['email'] == 'true') ? 'error' : ''; ?>"
/>
</p>
<p>
<label class="field" for="bericht">Bericht:</label>
<textarea
id="bericht"
name="bericht"
class="none <?php echo (isset($_SESSION['errors']['bericht']) && $_SESSION['errors']['bericht'] == 'true') ? 'error' : ''; ?>"
cols="70"
rows="10"><?php echo isset($_SESSION['input']['bericht']) ? $_SESSION['input']['bericht'] : ''; ?></textarea>
</p>
<p>
<input type="submit" value="Verzenden" />
</p>
</form>
</div>
</body>
</html>
Deze slaat echter op de oude Swift Mail, en de bestanden waarnaar verwezen werd, zijn veranderd. Nu heb ik geprobeerd naar de juiste bestanden te verwijzen. Dat zijn dus deze:
Code (php)
1
2
3
2
3
<?php require_once '../lib/swift_required.php';
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift.php";
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift/SmtpTransport.php";?>
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift.php";
require_once $_SERVER['DOCUMENT_ROOT']."/lib/classes/Swift/SmtpTransport.php";?>
Maar nu krijg ik de volgende error:
Fatal error: Class 'Swift_Connection_SMTP' not found in /var/www/vhosts/mijndomein.nl/httpdocs/test/contact.php on line 52
Kan iemand mij helpen?
Gewijzigd op 01/01/1970 01:00:00 door Tom C
Je hebt nog steeds niet de juiste bestanden. De klasse 'Swift_Connection_SMTP' ontbreekt nog. Enig idee in welk bestand die zou zitten?
Het lijkt wel alsof Swift_Connection_SMTP niet meer bestaat..
Maar hoe geef ik dan mijn SMTP server op?
Tom schreef op 25.05.2009 18:30:
Zie regel 52.Ik heb vrijwel alle bestanden gecontroleerd..
Het lijkt wel alsof Swift_Connection_SMTP niet meer bestaat..
Maar hoe geef ik dan mijn SMTP server op?
Het lijkt wel alsof Swift_Connection_SMTP niet meer bestaat..
Maar hoe geef ik dan mijn SMTP server op?
Je ziet toch dat hij "Swift_Connection_SMTP" niet kan vinden.
Dan vraag ik me nu dus af, hoe het wél moet..
Zoek Swift_Connection_SMTP op. Die móét bestaan, anders kan het niet.
en toen ik bijna bij de bodem kwam (=P) zag ik eindelijk waar het aan lag.
Het hele systeem is omgegooid, en Swift_Connection_SMTP bestaat niet meer.
Ik ga er vanavond uitgebreid naar kijken.
Ik hou jullie op de hoogte ;-)
mvg,
Tom