Copy mail in php, maar alleen het e-mail adres doorsturen?
======================
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
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
<?php
if(isset($_POST['email'])) {
// CHANGE THE TWO LINES BELOW
$email_to = "[email protected] , [email protected]";
$email_subject = "uw form name";
function died($error) {
// your error code can go here
echo "Es gab Fehler (n) mit dem Formular. ";
echo "Diese Fehler (n) erscheinen unten.<br /><br />";
echo $error."<br /><br />";
echo "Bitte gehen Sie zurück und beheben Sie diese Fehler.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['comments'])) {
died('Es gab Fehler (n) mit dem Formular.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$comments = $_POST['comments']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'Die E-Mail- Adresse, die Sie eingeben scheint nicht gültig zu sein.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'Der eingegebene Name erscheint nicht gültig zu sein.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'Der eingegebene Nachname erscheint nicht gültig zu sein.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'Der eingegebene nummer erscheint nicht gültig zu sein. Kontrollieren Ihre betreffende Bestellnummer mit die E-Mail Bestellbestätigung . <br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Info erscheint unten.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
// Redirect
header("Location: http://www.samplecom/index.html");
?>
if(isset($_POST['email'])) {
// CHANGE THE TWO LINES BELOW
$email_to = "[email protected] , [email protected]";
$email_subject = "uw form name";
function died($error) {
// your error code can go here
echo "Es gab Fehler (n) mit dem Formular. ";
echo "Diese Fehler (n) erscheinen unten.<br /><br />";
echo $error."<br /><br />";
echo "Bitte gehen Sie zurück und beheben Sie diese Fehler.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['comments'])) {
died('Es gab Fehler (n) mit dem Formular.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$comments = $_POST['comments']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'Die E-Mail- Adresse, die Sie eingeben scheint nicht gültig zu sein.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'Der eingegebene Name erscheint nicht gültig zu sein.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'Der eingegebene Nachname erscheint nicht gültig zu sein.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'Der eingegebene nummer erscheint nicht gültig zu sein. Kontrollieren Ihre betreffende Bestellnummer mit die E-Mail Bestellbestätigung . <br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Info erscheint unten.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
// Redirect
header("Location: http://www.samplecom/index.html");
?>
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
tevens raad ik ook aan om netjes op lijn 67 te controleren of mail() gelukt (true) is. Het is geen sluitend bewijs of ene mail is aangekomen, maar het geeft wel aan of het zonder problemen verstuurd is door de server.
Nu zal deze altijd worden doorgestuurd naar je html-pagina, waarbij onafhankelijk of het wel/niet gelukt is.
als ik
$email_to = "[email protected]";
$bcc_emailadres = '[email protected]';
ga gebruiken, dan komt de mail binnen op het BCC adres en niet op het adres dat op de eerste regel staat.
als extra header heb ik toegevoegd:
$headers.= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
denk dat het op deze manier niet lukt.
ik wil n.l alleen maar via het BCC adres de email ontvangen die de klant invult op het formulier.
Ik zag ook dat er in mijn script dubbele quotes worden gebruikt en bij de BCC mail een enkele.
gr
K
Verder zijn er een hoop bekende verbeterpunten. Ten eerste zou ik prefereren om een framework als PHPMailer te gebruiken. Deze handelt de mail beter en veiliger af en is uiteindelijk ook makkelijker in gebruik.
Variabelen kopiëren zoals op regel 21-24 is totaal overbodig en schept verwarring. Nog erger is dat je op regel 58-61 de gekopieerde variabelen nogmaals kopieert.
I.p.v. de email regex op regel 34 kun je beter FILTER_VALIDATE_EMAIL gebruiken.
Met dank