Mail vanuit contactfromulier komt niet aan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tonnie van Klooster

Tonnie van Klooster

22/04/2012 11:47:13
Quote Anchor link
Als beginner wil ik een mailscript plaatsen op de site van een collega. Dus ik heb een kant en klaar scriptkant en klaar script gezocht (met captcha's tegen spam) en ben ermee aan de slag gegaan:
Stap 1 zorgen dat alle sub-dirs de juiste (schrijf)rechten hebben. Was zo gebeurd.
Stap 2 zorgen dat het werkt...
Stap 3 aanpassen aan de site en wensen van mijn collega.

Stap 2 zou alleen betekenen dat ik even snel de emailadressen en URL aanpas.
Zo gedaan. Maar bij het testen blijkt het niet te werken. Als ik de captcha's verkeerd invoer wordt er netjes vermeld dat het formulier niet is verstuurd. Dat werkt dus. Alles invullen met de juiste captcha's geeft netjes de terugmelding dat het formulier is verzonden....
Er komt echter niets aan in mijn mailbox.

Waar kan het aan liggen?
Site waar het om gaat: http://www.tekenbureauvanderwelle.nl/index2.html
Site waar ik het script heb gevonden: http://www.albruna.nl/albrunablog/2009/09/update-3-gratis-html-en-php-contactformulieren/

Ik zou graag verder gaan met stap 3 maar dan moet toch ook stap 2 eerst gezet worden.
 
PHP hulp

PHP hulp

23/11/2024 14:25:33
 
- SanThe -

- SanThe -

22/04/2012 11:53:37
Quote Anchor link
Zonder relevante code kunnen we niks.
 
Tonnie van Klooster

Tonnie van Klooster

22/04/2012 11:59:38
Quote Anchor link
Sorry. Ik wist niet of ik hier hele lappen code mocht neerzetten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?PHP

define('kOptional', true);
define('kMandatory', false);

error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('track_errors', true);

function
CaptchaGenerator() {

 if ( (!function_exists('imagejpeg')) && (!function_exists('imagepng')) ) {
  exit;
 }


 $im = imagecreate(100,40);

 $white = imagecolorallocate($im, 255, 255, 255);
 $black = imagecolorallocate($im, 0, 0, 0);
 $gray = imagecolorallocate($im, 150, 150, 150);

 imagerectangle($im, 0, 0, 25, 39, $gray);
 imagerectangle($im, 25, 0, 50, 39, $gray);
 imagerectangle($im, 50, 0, 75, 39, $gray);
 imagerectangle($im, 75, 0, 99, 39, $gray);

 imageline($im, 0, 0, 25, 39, $gray);
 imageline($im, 25, 0, 50, 39, $gray);
 imageline($im, 50, 0, 75, 39, $gray);
 imageline($im, 75, 0, 99, 39, $gray);

 imageline($im, 0, 39, 25, 0, $gray);
 imageline($im, 25, 39, 50, 0, $gray);
 imageline($im, 50, 39, 75, 0, $gray);
 imageline($im, 75, 39, 99, 0, $gray);

 $c1 = rand(65, 90);
 $c2 = rand(65, 90);
 $c3 = rand(65, 90);
 $c4 = rand(65, 90);
 $c5 = rand(65, 90);

 $textOut = chr($c1) . ' ' . chr($c2) . ' ' . chr($c3) . ' ' . chr($c4) . ' ' . chr($c5);
 $textCaptcha = chr($c1) . chr($c2) . chr($c3) . chr($c4) . chr($c5);

 $a = imagestring($im, 5, 11, 13, $textOut, $black);

 $fileName = substr(md5($textCaptcha), 0, 12);

 $captchaDir = '../captchabestanden/';

 if ( !is_dir( $captchaDir ) ) {
  echo '<html><head><title>Error</title></head><body>Access Code Validatie Error: directory &quot;../captchabestanden&quot; niet gevonden. Script zal nu stoppen.</body></html>';
  exit;
 }


 if ( !is_writable( $captchaDir ) ) {
  echo '<html><head><title>Error</title></head><body>Access Code Validatie Error: directory &quot;../captchabestanden&quot; is niet beschrijfbaar. Script zal nu stoppen.</body></html>';
  exit;
 }


 $handle = opendir( $captchaDir );

 while ( $captchaFile = readdir($handle) ) {
  if ( ( substr($captchaFile, 0, 1) != '.' ) && ( substr($captchaFile, 0, 1) != '_' ) && ( !is_dir( '../captchabestanden/' . '/' . $captchaFile ) ) ) {
   if ( ( filemtime( '../captchabestanden/' . '/' . $captchaFile ) + 300 ) < time() ) {
    unlink( '../captchabestanden/' . '/' . $captchaFile );
   }
  }
 }


 closedir( $handle );

 $handle = @fopen( '../captchabestanden/' . '/' . $fileName, 'w' );

 if ( !$handle ) {
  echo '<html><head><title>Error</title></head><body>Access Code Validatie Error: het is onmogelijk gebleken om een captcha controle bestand te maken. Script zal nu stoppen.</body></html>';
  exit;
 }

 
 fclose($handle);

 if (imagetypes() & IMG_JPG) {
  header('Content-type: image/jpeg');
  imagejpeg($im);
 }
elseif (imagetypes() & IMG_PNG) {
  header('Content-type: image/png');
  imagepng($im);
 }

 exit;

}

function
DoStripSlashes($fieldValue)  {
 if ( get_magic_quotes_gpc() ) {
  if (is_array($fieldValue) ) {
   return array_map('DoStripSlashes', $fieldValue);
  }
else {
   return stripslashes($fieldValue);
  }
 }
else {
  return $fieldValue;
 }
}

function
FilterCChars($theString) {
 return preg_replace('/[\x00-\x1F]/', '', $theString);
}

function
CheckFTGCaptcha($accessCode) {

 $captchaDir = '../captchabestanden/';

 if ( !is_dir( $captchaDir ) ) {
  echo '<html><head><title>Error</title></head><body>Access Code Validatie Error: directory &quot;../captchabestanden&quot; niet gevonden. Script zal nu stoppen.</body></html>';
  exit;
 }


 $handle = opendir( $captchaDir );

 $fileAccessCode = substr( md5( $accessCode ), 0, 12 );

 while ( $captchaFile = readdir( $handle ) ) {
  if ( substr( $captchaFile, 0, 1 ) != '.' ) {
   if ( $fileAccessCode == $captchaFile ) {
    return true;
   }
  }
 }

 return false;
}

function
DeleteCaptcha($accessCode) {

 $captchaDir = '../captchabestanden/';

 if ( !is_dir( $captchaDir ) ) {
  echo '<html><head><title>Error</title></head><body>Access Code Validatie Error: directory &quot;../captchabestanden&quot; niet gevonden. Script zal nu stoppen.</body></html>';
  exit;
 }


 $handle = opendir( $captchaDir );

 $fileAccessCode = substr( md5( $accessCode ), 0, 12 );

 while ( $captchaFile = readdir( $handle ) ) {
  if ( ( substr( $captchaFile, 0, 1 ) != '.' ) && ( substr( $captchaFile, 0, 1 ) != '_' ) && ( !is_dir( '../captchabestanden/' . '/' . $captchaFile ) ) ) {
   if ( $fileAccessCode == $captchaFile ) {
    unlink( '../captchabestanden/' . '/' . $captchaFile );
    return;
   }
  }
 }

}


if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
 $clientIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else {
 $clientIP = $_SERVER['REMOTE_ADDR'];
}


if ( isset($_REQUEST['captchaimage']) ) {
 CaptchaGenerator();
 exit;
}


$FTGvoornaam = DoStripSlashes( $_POST['voornaam'] );
$FTGachternaam = DoStripSlashes( $_POST['achternaam'] );
$FTGadres = DoStripSlashes( $_POST['adres'] );
$FTGpostcodewoonplaats = DoStripSlashes( $_POST['postcodewoonplaats'] );
$FTGtelefoonnummer = DoStripSlashes( $_POST['telefoonnummer'] );
$FTGemailadres = DoStripSlashes( $_POST['emailadres'] );
$FTGopmerkingen = DoStripSlashes( $_POST['opmerkingen'] );
$FTGbeveiliging = DoStripSlashes( $_POST['beveiliging'] );
$FTGverzenden = DoStripSlashes( $_POST['verzenden'] );

$validationFailed = false;

if (!CheckFTGCaptcha($FTGbeveiliging)) {
 $FTGErrorMessage['beveiliging'] = '';
 $validationFailed = true;
}


if ($validationFailed === true) {

 $errorPage = '<html><head><title>Error</title></head><body>Het formulier is niet verstuurd. probeer het nogmaals.</body></html>';

 $errorPage = str_replace('<!--FIELDVALUE:voornaam-->', $FTGvoornaam, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:achternaam-->', $FTGachternaam, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:adres-->', $FTGadres, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:postcodewoonplaats-->', $FTGpostcodewoonplaats, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:telefoonnummer-->', $FTGtelefoonnummer, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:emailadres-->', $FTGemailadres, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:opmerkingen-->', $FTGopmerkingen, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:beveiliging-->', $FTGbeveiliging, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:verzenden-->', $FTGverzenden, $errorPage);

 $errorList = @implode("<br />\n", $FTGErrorMessage);
 $errorPage = str_replace('<!--VALIDATIONERROR-->', $errorList, $errorPage);

 echo $errorPage;

}


if ( $validationFailed === false ) {

 $emailSubject = FilterCChars("Mail via contactformulier website.");
  
 $emailBody = "Voornaam : $FTGvoornaam\n"
  . "Achternaam : $FTGachternaam\n"
  . "Adres : $FTGadres\n"
  . "Postcode + woonplaats : $FTGpostcodewoonplaats\n"
  . "Telefoonnummer : $FTGtelefoonnummer\n"
  . "E-mailadres : $FTGemailadres\n"
  . "Opmerkingen : $FTGopmerkingen";
  $emailTo = 'Tonnie <[email protected]>';
  
  $emailFrom = FilterCChars("[email protected]");
  
  $emailHeader = "From: $emailFrom\n"
   . "MIME-Version: 1.0\n"
   . "Content-type: text/plain; charset=\"ISO-8859-1\"\n"
   . "Content-transfer-encoding: 7bit\n";
  
  mail($emailTo, $emailSubject, $emailBody, $emailHeader);
  
  DeleteCaptcha($FTGbeveiliging);

$successPage = '<html><head><title>Success</title></head><body>Het formulier is succesvol verstuurd.</body></html>';

$successPage = str_replace('<!--FIELDVALUE:voornaam-->', $FTGvoornaam, $successPage);
$successPage = str_replace('<!--FIELDVALUE:achternaam-->', $FTGachternaam, $successPage);
$successPage = str_replace('<!--FIELDVALUE:adres-->', $FTGadres, $successPage);
$successPage = str_replace('<!--FIELDVALUE:postcodewoonplaats-->', $FTGpostcodewoonplaats, $successPage);
$successPage = str_replace('<!--FIELDVALUE:telefoonnummer-->', $FTGtelefoonnummer, $successPage);
$successPage = str_replace('<!--FIELDVALUE:emailadres-->', $FTGemailadres, $successPage);
$successPage = str_replace('<!--FIELDVALUE:opmerkingen-->', $FTGopmerkingen, $successPage);
$successPage = str_replace('<!--FIELDVALUE:beveiliging-->', $FTGbeveiliging, $successPage);
$successPage = str_replace('<!--FIELDVALUE:verzenden-->', $FTGverzenden, $successPage);

echo $successPage;

}


?>
 
Noppes Homeland

Noppes Homeland

22/04/2012 12:08:17
Quote Anchor link
Gooi dat maar weg en implementeer gewoon een mailclass als zijnde:
- php mailer
- swiftmailer

Zodra jij ergens in een handleiding leest dat je chmod(777) moet doen dan moet je het in feite al links laten liggen.

Note: een captcha dient on the fly en random aangemaakt te worden, het heeft geen enkel nut om deze op schijf op te slaan. En zo te zien is deze captcha generator ook van een nivo dat het de spam niet zal tegen houden.
 
Tonnie van Klooster

Tonnie van Klooster

22/04/2012 12:20:30
Quote Anchor link
Ah.... helemaal overnieuw dus...

php mailer of swiftmailer. Afhankelijk van 3th party software?

Zal ik eens gaan bekijken.
Bedankt.
 
Tonnie van Klooster

Tonnie van Klooster

03/05/2012 20:23:41
Quote Anchor link
Swiftmailer of PHP mailer nog even niet. Ik heb nu stap voor stap een formulier opgebouwd. Eerst het contactformulier. De anti-spam komt later wel...:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
if(!isset($_POST['verzend'])) {
?>

<form action="" method="post" />

<label for="naam">Naam: </label>
<input id="naam" type="text" name="naam" value="<?php echo $_POST['naam']; ?>" /><br />

<label for="mail">E-mail: </label>
<input id="mail" type="text" name="mail" value="<?php echo $_POST['mail']; ?>" /><br />

<label for="onderwerp">Onderwerp: </label>
<input id="onderwerp" type="text" name="onderwerp" value="<?php echo $_POST['onderwerp']; ?>" /><br />

<label for="bericht">Bericht: </label>
<textarea id="bericht" name="bericht" cols="40" rows="10"><?php echo $_POST['bericht']; ?></textarea><br />

<input type="submit" name="verzend" value="Verzenden!" />
<?php
} else {
$naar = '[email protected]';
$onderwerp = $_POST['onderwerp'];
$bericht = $_POST['bericht'];
$headers = 'From: ' . $_POST["mail"] . "\r\n" .
'Reply-To: ' . $_POST["mail"] . "\r\n" .
'X-Mailer: PHP/'. phpversion();

mail($naar, $onderwerp, $bericht, $headers);
echo "Bedankt, uw mail is verzonden!";
}

?>


Alles lijkt te werken behalve dan dat nu alweer de mail niet aankomt. Als ik met mijn FTP-programma de site wil uploaden zie ik twee folders(eigenlijk drie maar de CGI-bin reken ik even niet mee): een folder genaamd 'php' en een folder genaamd 'docs'. In die docs-folder staat de site. Moet ik nu niet in de regel met X-Mailer: PHP/'. phpversion() aangeven dat de PHP in een hogere directory staat? X-Mailer: ../PHP/'. phpversion() bijvoorbeeld? Of is dat niet nodig?
 
- SanThe -

- SanThe -

03/05/2012 20:44:01
 
Patrick vd Pols

Patrick vd Pols

03/05/2012 20:47:20
Quote Anchor link
Kan je als anti spam niet gewoon een simpel sommetje neerzeten ?

Bijvoorbeeld Acht plus Drie (antwoord in cijfers)

if ($sommetje != 11) {
Code niet uitvoeren }
else {
code uitvoeren }

Weet niet zeker of dit echt helpt tegen spam, hoor graag de meningen van andere hierover

edit :

Volgens mij kan je dat 'X-Mailer: PHP/'. phpversion(); er gewoon uitslopen.. heeft geen nut denk ik
Gewijzigd op 03/05/2012 20:49:52 door Patrick vd Pols
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.