Form Autoresponder PHP Afzender
Ik heb het volgende script gebruikt om een formulier naar mijn inbox te sturen en tegelijkertijd een autoresponder naar de subscriber die het formulier heeft ingevuld te verzenden.
Dit werkt allemaal, op één detail na:
De afzender van de email die de subscriber ontvangt moet "[email protected]" zijn, maar is nu "[email protected]" (mijndomein.nl is m'n host).
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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
<?php
if(!isset($_POST['submit']))
{
echo "error; you need to submit the form!";
}
$NAME = $_POST['NAME'];
$EMAIL = $_POST['EMAIL'];
$PHONE = $_POST['PHONE'];
$email_from = '[email protected]';
$email_subject = "Aanmelding";
$email_body = "$NAME\n".
"$EMAIL\n".
"$PHONE\n".
$to = "[email protected]";
$headers = "From: $EMAIL \r\n";
mail($to,$email_subject,$email_body,$headers);
header('Location: aanmelding.html');
$respond_subject = "Aanmelding Festival Helden";
$to2 = "$EMAIL";
$email_from = '[email protected]';
$respond_message = "Hallo,
Bedankt voor je aanmelding bij Festival Helden!
Op dit moment zoeken wij vrijwilligers voor PLAY en Bon Bini Beach Toernooi:
PLAY vindt plaats op 31 mei te Eersel en is het nieuwe gratis festival dat sport, kennis en muziek combineert tot een ongekend evenement. Voor PLAY zijn we op zoek naar vrijwilligers die achter de bar en/of bij de muntenverkoop willen helpen. Ben je beschikbaar op 31 mei en lijkt het je leuk om een handje te helpen tijdens PLAY? Stuur dan een email naar [email protected].
Bon Bini Beach vindt plaats op 11 t/m 13 juli te Eersel en is het grootste en spectaculairste jong-senioren hockeytoernooi van Nederland. Voor Bon Bini Beach zijn we voornamelijk op zoek naar vrijwilligers voor de op- en afbouw. Zin om aan de slag te gaan en te helpen met Bon Bini Beach? Stuur dan een email naar [email protected].
Groeten en hopelijk tot snel,
Niels
Festival Helden
";
mail($to2,$respond_subject,$respond_message,$headers2);
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
if(!isset($_POST['submit']))
{
echo "error; you need to submit the form!";
}
$NAME = $_POST['NAME'];
$EMAIL = $_POST['EMAIL'];
$PHONE = $_POST['PHONE'];
$email_from = '[email protected]';
$email_subject = "Aanmelding";
$email_body = "$NAME\n".
"$EMAIL\n".
"$PHONE\n".
$to = "[email protected]";
$headers = "From: $EMAIL \r\n";
mail($to,$email_subject,$email_body,$headers);
header('Location: aanmelding.html');
$respond_subject = "Aanmelding Festival Helden";
$to2 = "$EMAIL";
$email_from = '[email protected]';
$respond_message = "Hallo,
Bedankt voor je aanmelding bij Festival Helden!
Op dit moment zoeken wij vrijwilligers voor PLAY en Bon Bini Beach Toernooi:
PLAY vindt plaats op 31 mei te Eersel en is het nieuwe gratis festival dat sport, kennis en muziek combineert tot een ongekend evenement. Voor PLAY zijn we op zoek naar vrijwilligers die achter de bar en/of bij de muntenverkoop willen helpen. Ben je beschikbaar op 31 mei en lijkt het je leuk om een handje te helpen tijdens PLAY? Stuur dan een email naar [email protected].
Bon Bini Beach vindt plaats op 11 t/m 13 juli te Eersel en is het grootste en spectaculairste jong-senioren hockeytoernooi van Nederland. Voor Bon Bini Beach zijn we voornamelijk op zoek naar vrijwilligers voor de op- en afbouw. Zin om aan de slag te gaan en te helpen met Bon Bini Beach? Stuur dan een email naar [email protected].
Groeten en hopelijk tot snel,
Niels
Festival Helden
";
mail($to2,$respond_subject,$respond_message,$headers2);
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
Hoe los ik dit op?
Alvast bedankt!
Groeten,
Niels
Helaas is mijn kennis zo minimaal dat ik hieruit niet kan opmaken welke van mijn mailheaders nu correct zijn of niet, en welke eventueel missen. Iemand een idee?
Je kan het script ook implementeren, nog veel makkelijker.
Tegenwoordig wordt bijna altijd gecontroleerd of een bepaalde afzender wel via de mailserver email mag versturen (via de SPF record).
Zo niet wordt het aangemerkt als spam of compleet geweigerd.
Gebruik een mail class zoals PHPMailer of SwiftMail, zodat je gewoon een SMTP login kan gebruiken.
Quote:
toe te voegen. Alles werkt nu.$headersb = "From: $email_from \r\n";
Is het daadwerkelijk niet aan te raden om zelf &headers toe te voegen en dus verstandiger om PHPmailer te gebruiken, en waarom?
Toevoeging op 06/05/2014 15:03:17:
En nog een vraag:
Ik zou graag in de autoresponde message de aanhef aanvullen met de naam van de subscriber.
Dus: Hallo Jon Doe,
Ik heb het geprobeert door "Hallo $NAME" te gebruiken maar dit werkt niet. Hoe los ik dit op?
Zet error_reporting(E_ALL) eens aan.