email/contact form issues
hopelijk post ik in de juiste topic ...
Ik heb een email/contact form gemaakt, die op het eerste zicht goed lijkt te werken:
_ error/opmerking verschijnt ingeval nodige velden niet ingevuld zijn = OK
_ submit button doet het; bericht lijkt verzonden = OK
_ na het submitten verchijnt de 'thank you' / confirmation pagina = OK
_ na verzending bericht, wordt de bezoeker ge-redirect naar aangeduide pagina = OK
Probleem: de verzonden berichten komen nooit aan in mijn mailbox; hoewel ik ook geen enkele error krijg?
Kunnen jullie eens checken/testen aub:
http://www.gamanga.com/contact.php
hieronder de code, alvast bedankt voor jullie hulp en adviezen!
Quote:
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
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
<?php
// Set email variables
$email_to = '[email protected]';
$email_subject = 'Form submission';
// Set required fields
$required_fields = array('fullname','email','comment');
// set error messages
$error_messages = array(
'fullname' => 'Please enter a Name to proceed.',
'email' => 'Please enter a valid Email Address to continue.',
'comment' => 'Please enter your Message to continue.'
);
// Set form status
$form_complete = FALSE;
// configure validation array
$validation = array();
// check form submittal
if(!empty($_POST)) {
// Sanitise POST array
foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));
// Loop into required fields and make sure they match our needs
foreach($required_fields as $field) {
// the field has been submitted?
if(!array_key_exists($field, $_POST)) array_push($validation, $field);
// check there is information in the field?
if($_POST[$field] == '') array_push($validation, $field);
// validate the email address supplied
if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
}
// basic validation result
if(count($validation) == 0) {
// Prepare our content string
$email_content = 'New Website Comment: ' . "\n\n";
// simple email content
foreach($_POST as $key => $value) {
if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
}
// if validation passed ok then send the email
mail($email_to, $email_subject, $email_content);
// Update form switch
$form_complete = TRUE;
}
}
function validate_email_address($email = FALSE) {
return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
}
function remove_email_injection($field = FALSE) {
return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}
?>
// Set email variables
$email_to = '[email protected]';
$email_subject = 'Form submission';
// Set required fields
$required_fields = array('fullname','email','comment');
// set error messages
$error_messages = array(
'fullname' => 'Please enter a Name to proceed.',
'email' => 'Please enter a valid Email Address to continue.',
'comment' => 'Please enter your Message to continue.'
);
// Set form status
$form_complete = FALSE;
// configure validation array
$validation = array();
// check form submittal
if(!empty($_POST)) {
// Sanitise POST array
foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));
// Loop into required fields and make sure they match our needs
foreach($required_fields as $field) {
// the field has been submitted?
if(!array_key_exists($field, $_POST)) array_push($validation, $field);
// check there is information in the field?
if($_POST[$field] == '') array_push($validation, $field);
// validate the email address supplied
if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
}
// basic validation result
if(count($validation) == 0) {
// Prepare our content string
$email_content = 'New Website Comment: ' . "\n\n";
// simple email content
foreach($_POST as $key => $value) {
if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
}
// if validation passed ok then send the email
mail($email_to, $email_subject, $email_content);
// Update form switch
$form_complete = TRUE;
}
}
function validate_email_address($email = FALSE) {
return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
}
function remove_email_injection($field = FALSE) {
return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}
?>
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
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
<script type="text/javascript" src="contact/validation/validation.js"></script>
<script type="text/javascript">
var nameError = '<?php echo $error_messages['fullname']; ?>';
var emailError = '<?php echo $error_messages['email']; ?>';
var commentError = '<?php echo $error_messages['comment']; ?>';
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
</script>
<script type="text/javascript" src="contact/validation/validation.js"></script>
<script type="text/javascript">
var nameError = '<?php echo $error_messages['fullname']; ?>';
var emailError = '<?php echo $error_messages['email']; ?>';
var commentError = '<?php echo $error_messages['comment']; ?>';
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
</script>
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
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
<?php if($form_complete === FALSE): ?>
<form action="contact.php" method="post" id="comments_form">
<div class="row">
<div class="label">Your name :</div> <!-- end .label -->
<div class="input">
<input type="text" id="fullname" class="detail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>" /><?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?>
</div><!-- end .input -->
<div class="context">e.g. John Smith or Jane Doe</div><!-- end .context -->
</div> <!-- end .row -->
<div class="row">
<div class="label">Your email adress :</div> <!-- end .label -->
<div class="input">
<input type="text" id="email" class="detail" name="email" value="
<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" /><?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>
</div><!-- end .input -->
<div class="context">We will not share your email with anyone or spam you with messages either</div><!-- end .context -->
</div> <!-- end .row -->
<div class="row">
<div class="label">Your message :</div> <!-- end .label -->
<div class="input">
<textarea id="comment" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea><?php if(in_array('comment', $validation)): ?><span class="error"><?php echo $error_messages['comment']; ?></span><?php endif; ?>
</div><!-- end .input -->
</div> <!-- end .row -->
<div class="submit">
<input type="submit" id="submit" name="submit" value="Send Message" />
</div> <!-- end .submit -->
</form>
<?php else: ?>
<p style="margin-left:10px; margin-top:30px; margin-bottom:0px; font-size:18px;">Thank you for your message. We appreciate your feedback!</p>
<script type="text/javascript">
setTimeout('ourRedirect()', 4000)
function ourRedirect() {
location.href='Index.html'
}
</script>
<?php endif; ?>
<form action="contact.php" method="post" id="comments_form">
<div class="row">
<div class="label">Your name :</div> <!-- end .label -->
<div class="input">
<input type="text" id="fullname" class="detail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>" /><?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?>
</div><!-- end .input -->
<div class="context">e.g. John Smith or Jane Doe</div><!-- end .context -->
</div> <!-- end .row -->
<div class="row">
<div class="label">Your email adress :</div> <!-- end .label -->
<div class="input">
<input type="text" id="email" class="detail" name="email" value="
<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" /><?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>
</div><!-- end .input -->
<div class="context">We will not share your email with anyone or spam you with messages either</div><!-- end .context -->
</div> <!-- end .row -->
<div class="row">
<div class="label">Your message :</div> <!-- end .label -->
<div class="input">
<textarea id="comment" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea><?php if(in_array('comment', $validation)): ?><span class="error"><?php echo $error_messages['comment']; ?></span><?php endif; ?>
</div><!-- end .input -->
</div> <!-- end .row -->
<div class="submit">
<input type="submit" id="submit" name="submit" value="Send Message" />
</div> <!-- end .submit -->
</form>
<?php else: ?>
<p style="margin-left:10px; margin-top:30px; margin-bottom:0px; font-size:18px;">Thank you for your message. We appreciate your feedback!</p>
<script type="text/javascript">
setTimeout('ourRedirect()', 4000)
function ourRedirect() {
location.href='Index.html'
}
</script>
<?php endif; ?>
Gewijzigd op 05/05/2013 19:13:42 door MANGANIX MANGANIX
probeer anders eerst even onderstaand testje.
welke provider heb je?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$to = '[email protected]'; // de ontvanger
$subject = 'the subject';
$message = 'hello';
$headers = 'From: [email protected]' . "\r\n" . // email adres met je domeinnaam
'Reply-To: [email protected]'; // je eigen emailadres
if(mail($to, $subject, $message, $headers))
echo 'email is verzonden.';
else
echo 'FOUT: email is NIET verzonden.';
?>
$to = '[email protected]'; // de ontvanger
$subject = 'the subject';
$message = 'hello';
$headers = 'From: [email protected]' . "\r\n" . // email adres met je domeinnaam
'Reply-To: [email protected]'; // je eigen emailadres
if(mail($to, $subject, $message, $headers))
echo 'email is verzonden.';
else
echo 'FOUT: email is NIET verzonden.';
?>
Gewijzigd op 05/05/2013 09:12:14 door Frank Nietbelangrijk
Gewijzigd op 05/05/2013 12:55:19 door - Ariën -
bedankt voor de reactie!
Heb de test gedaan en krijg "email is verzonden", als ik de test in DW/testomgeving doe.
Krijg "FOUT: email is NIET verzonden" als ik de pagina online upload en daar de test uitvoer.
Maar in geen van beide gevallen valt er iets binnen in de opgegeven mailbox.
Ziehier pagina met de test:
http://gamanga.com/contact.php
PS: de vermelding "FOUT: email is NIET verzonden" verschijnt meteen wanneer je de pagina oproept; dus niet pas nadat ik een bericht 'submit' .. is dat de bedoeling of paste ik de test verkeerd in?
Quote:
welke provider heb je?
mijn provider is telenet
de pagina is gehost bij 'awardspace'
Ik heb nog andere pagina's met comment sections (php), maar die werken perfect?
Gewijzigd op 05/05/2013 19:30:22 door MANGANIX MANGANIX
Ger van Steenderen op 05/05/2013 19:57:52:
Hey!
bedankt voor je reactie.
heb deze test uitgevoerd en het werkt wel degelijk; de mails komen aan in mijn aangegeven mailbox.
Code (php)
Ik heb dus in mijn mail manager een email-account aangemaakt zoals aangegeven in de link die je stuurde:
Quote:
This script is sending email (to [email protected]) and printing “MAIL – OK” on the page.
Please note that the ‘from’ header should be an existing email account inside your Email Manager of your hosting Control Panel.
Please note that the ‘from’ header should be an existing email account inside your Email Manager of your hosting Control Panel.
De mails die vanop de contactpage worden verstuurd komen aan in de mailbox, maar telkens als een FW vanuit mijn gecreëerde mailbox binnen mijn account awardspace:
Zodra ik de mail binnen mijn account bij awardspace verwijder, dan krijg ik terug hetzelfde probleem en komen de mails niet meer aan.
Dus, het is vereist een email account te creëren bij mijn host awardspace die "FROM" moet dienen en gaan alle berichten die verstuurd worden vanop de contactpage als een FW van die email account binnenkomen? Correct?
... ik lijk het wel ingewikkelder te maken dan het is, maar hopelijk ben ik duidelijk ... ;-)
Alvast bedankt.
Gewijzigd op 05/05/2013 21:39:35 door MANGANIX MANGANIX
ja het zal wel correct zijn dat je een bestaand email adres moet gebruiken. dit is allemaal om spam tegen te gaan