From/Reply field probleem
Goedemorgen,
Heb een simpel PHP mailscript aangepast IVM het "from" field wat vaak moet verwijzen naar een [email protected], IPV het emailadres wat is ingevuld door de verzender, IVM spammisbruik. Mijn script werkt bij de ene webhost maar niet bij de andere.
Dit stukje code werkt bijna goed, maar als ik dan reply in GMAIL staat mijn eigen adres in het reply field:
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
Dat heb ik daarom vervangen voor dit en dat werkt bij de ene maar niet bij de andere webhost, daar klopt de output niet:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
Hier gaat het fout, uit de header:
From: "[email protected]:test"@test.nl
Dus daar wordt from en reply niet gescheiden, denk dat het iets heeft te maken met de opmaak, de quotes, en die puntjes maar ik weet het niet. Probleem is dat ik bij de host waar het niet werkt niet veel kan testen, de server blokkeert mijn mail als er iets niet klopt bij het from field.
Iemand een tip?
BVD!
Gr. Arno
Heb een simpel PHP mailscript aangepast IVM het "from" field wat vaak moet verwijzen naar een [email protected], IPV het emailadres wat is ingevuld door de verzender, IVM spammisbruik. Mijn script werkt bij de ene webhost maar niet bij de andere.
Dit stukje code werkt bijna goed, maar als ik dan reply in GMAIL staat mijn eigen adres in het reply field:
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
Dat heb ik daarom vervangen voor dit en dat werkt bij de ene maar niet bij de andere webhost, daar klopt de output niet:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
Hier gaat het fout, uit de header:
From: "[email protected]:test"@test.nl
Dus daar wordt from en reply niet gescheiden, denk dat het iets heeft te maken met de opmaak, de quotes, en die puntjes maar ik weet het niet. Probleem is dat ik bij de host waar het niet werkt niet veel kan testen, de server blokkeert mijn mail als er iets niet klopt bij het from field.
Iemand een tip?
BVD!
Gr. Arno
Gewijzigd op 24/09/2018 10:58:15 door Arno Veers
Je kan ook phpMailer gebruiken.
Daarbuiten, je vergeet de "\r\n" achter de headers.
Dat heb ik geprobeerd maar vond het groot (12 mappen, 105 bestanden), gebruik nu een scriptje van 30 regels, het is maar voor een simpel emailformulier voor de show (naam, telefoon, email, bericht).
Bedankt, gr. Arno
Toevoeging op 24/09/2018 11:27:18:
Ok waar zou ik die moeten plaatsen (ben geen pro) zoiets, tussen quotes en ;
$headers = "From: [email protected]"\r\n";
Bedankt, gr. Arno
Toevoeging op 24/09/2018 11:27:18:
Ben van Velzen op 24/09/2018 11:23:00:
Daarbuiten, je vergeet de "\r\n" achter de headers.
Ok waar zou ik die moeten plaatsen (ben geen pro) zoiets, tussen quotes en ;
$headers = "From: [email protected]"\r\n";
Gewijzigd op 24/09/2018 11:28:49 door Arno Veers
Gebruik bij voorkeur ook een zender naam. en je vergeet de \r\n. dit kun je ook oplossen met PHP_EOL.
Verder lijkt er inderdaad iets fout te aan met een quote te zien aan To:test"@test.nl maar ik zie in je bericht (denk ik) niet je exacte PHP code zoals je het nu gebruikt.
Verder lijkt er inderdaad iets fout te aan met een quote te zien aan To:test"@test.nl maar ik zie in je bericht (denk ik) niet je exacte PHP code zoals je het nu gebruikt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$naam = 'Testnaam';
$email = '[email protected]';
$headers = 'From: xxxxx.be <[email protected]>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam . ' <' . $email . '>' . PHP_EOL;
?>
$naam = 'Testnaam';
$email = '[email protected]';
$headers = 'From: xxxxx.be <[email protected]>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam . ' <' . $email . '>' . PHP_EOL;
?>
Gewijzigd op 24/09/2018 11:32:13 door Frank Nietbelangrijk
Is dat misschien waarom de ouptput mislukte?
From: "[email protected]:test"@test.nl
Toevoeging op 24/09/2018 11:36:53:
Dit is het hele script:
Toevoeging op 24/09/2018 11:47:28:
"Daarbuiten, je vergeet de "\r\n" achter de headers."
Zou dat ongeveer zo moeten tussen quotes en ;
$headers = "From: [email protected]"\r\n";
want ik denk dat t probleem daar ontstaat maar weet niet waar exact...
From: "[email protected]:test"@test.nl
Toevoeging op 24/09/2018 11:36:53:
Dit is het hele 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
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
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
<?php
if(isset($_POST['email'])) {
$email_to = "[email protected]";
$email_subject = "TESTformulier";
function died($error) {
include 'headertest.inc';
echo "<b style=\"font-size: 25px;color: red\">Formulier niet verzonden</b><br /><br /><br />";
echo $error."<br /><br />";
echo "<a href=javascript:history.back() class=two>Klik hier om terug te gaan naar het formulier<br /><br />";
include 'footertest.inc';
die();
}
if(//!isset($_POST['naam']) ||
!isset($_POST['email'])) {
died('U heeft niet alle velden ingevuld.');
}
$naam = $_POST['naam']; // required
$bedrijfsnaam = $_POST['bedrijfsnaam']; // required
$adres = $_POST['adres']; // required
$postcode = $_POST['postcode']; // required
$plaats = $_POST['plaats']; // required
$email_from = $_POST['email']; // required
$telefoon = $_POST['telefoon']; // not required
$bericht = $_POST['bericht']; // 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 .= '<b>Emailadres ongeldig...</b><br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Hieronder ziet u de inhoud van een ingezonden formulier.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Naam: ".clean_string($naam)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telefoon: ".clean_string($telefoon)."\n";
$email_message .= "Bericht: ".clean_string($bericht)."\n";
// create email headers
//volgende werkt bij de ene webhost wel maar bij de andere mislukt de output
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
//volgende werkt maar in gmail klopt reply field niet
//$headers = 'From: '.$email_from."\r\n".
//'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
if(isset($_POST['email'])) {
$email_to = "[email protected]";
$email_subject = "TESTformulier";
function died($error) {
include 'headertest.inc';
echo "<b style=\"font-size: 25px;color: red\">Formulier niet verzonden</b><br /><br /><br />";
echo $error."<br /><br />";
echo "<a href=javascript:history.back() class=two>Klik hier om terug te gaan naar het formulier<br /><br />";
include 'footertest.inc';
die();
}
if(//!isset($_POST['naam']) ||
!isset($_POST['email'])) {
died('U heeft niet alle velden ingevuld.');
}
$naam = $_POST['naam']; // required
$bedrijfsnaam = $_POST['bedrijfsnaam']; // required
$adres = $_POST['adres']; // required
$postcode = $_POST['postcode']; // required
$plaats = $_POST['plaats']; // required
$email_from = $_POST['email']; // required
$telefoon = $_POST['telefoon']; // not required
$bericht = $_POST['bericht']; // 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 .= '<b>Emailadres ongeldig...</b><br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Hieronder ziet u de inhoud van een ingezonden formulier.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Naam: ".clean_string($naam)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Telefoon: ".clean_string($telefoon)."\n";
$email_message .= "Bericht: ".clean_string($bericht)."\n";
// create email headers
//volgende werkt bij de ene webhost wel maar bij de andere mislukt de output
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
//volgende werkt maar in gmail klopt reply field niet
//$headers = 'From: '.$email_from."\r\n".
//'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
Toevoeging op 24/09/2018 11:47:28:
"Daarbuiten, je vergeet de "\r\n" achter de headers."
Zou dat ongeveer zo moeten tussen quotes en ;
$headers = "From: [email protected]"\r\n";
want ik denk dat t probleem daar ontstaat maar weet niet waar exact...
Gewijzigd op 24/09/2018 12:45:24 door Arno Veers
Over je controle op een mailadres:
Gebruik filter_var() om een mailadres te controleren. Nu stel jezelf de reguliere expressie op, en sluit je [email protected] al uit.
Gebruik filter_var() om een mailadres te controleren. Nu stel jezelf de reguliere expressie op, en sluit je [email protected] al uit.
Dat snap ik niet, heb wel enige kennis maar niet zo veel.
Hier moet ik ergens iets toevoegen ala "\r\n" meen ik maar waar? Want de output hiervan klopt niet
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
Hier moet ik ergens iets toevoegen ala "\r\n" meen ik maar waar? Want de output hiervan klopt niet
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
Frank, RFC2822 zegt specifiek dat \r\n gebruikt moet worden voor e-mail headers. PHP_EOL mag dus NIET gebruikt worden voor e-mailheaders.
Gewijzigd op 24/09/2018 13:09:24 door Ben van Velzen
Ok bedankt ik ga het uitzoeken echt, maar moet vandaag een website online zetten, kan iemand me zeggen waar in de volgende regels ik /r/n/ whatever moet toevoegen:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
de output is nu verkeerd: From: "[email protected]:test"@test.nl
test"@test.nl = wat is ingevuld in het formulier maar dan als [email protected] zonder die dubbele quotes
Hoewel slechts bij bepaalde webhosters,
IIG ontzettend bedankt,
Gr. Arno
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
de output is nu verkeerd: From: "[email protected]:test"@test.nl
test"@test.nl = wat is ingevuld in het formulier maar dan als [email protected] zonder die dubbele quotes
Hoewel slechts bij bepaalde webhosters,
IIG ontzettend bedankt,
Gr. Arno
Gewijzigd op 24/09/2018 13:29:08 door Arno Veers
Ik raad aan om je headers op deze manier op te bouwen.
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
Ja dat snap ik maar ik kom hier voor hulp niet voor een les, en ben niet te lui om het uit te zoeken maar heb gewoon een simpele vraag want hierna ga ik vast wel phpmailer gebruiken maar zit hier nu even mee.
waar in de volgende regels ik /r/n/ whatever moet toevoegen:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
de output is nu verkeerd: From: "[email protected]:test"@test.nl
test"@test.nl = wat is ingevuld in het formulier maar dan als [email protected] zonder die dubbele quotes
BVD,
Gr. Arno
waar in de volgende regels ik /r/n/ whatever moet toevoegen:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
de output is nu verkeerd: From: "[email protected]:test"@test.nl
test"@test.nl = wat is ingevuld in het formulier maar dan als [email protected] zonder die dubbele quotes
BVD,
Gr. Arno
Als je nou even rustig op de gegeven link kijkt zie je hoe het moet. :-)
Ok fijn bedankt ik zal het uitzoeken. Probleem is dat ik bij deze webhost niks meer kan testen zonder fouten te maken want dan wordt de mail vanaf de website direct geblokkeerd. Kan ook niet in korte tijd van webhost veranderen, vandaar dat ik mij afvroeg of iemand voor mij die twee lijntjes code kan aanpassen:
waar in de volgende regels ik /r/n/ whatever moet toevoegen:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
de output is nu verkeerd: From: "[email protected]:test"@test.nl
test"@test.nl = wat is ingevuld in het formulier maar dan als [email protected] zonder die dubbele quotes
waar in de volgende regels ik /r/n/ whatever moet toevoegen:
$headers = "From: [email protected]";
$headers .= "Reply-To: $email_from";
de output is nu verkeerd: From: "[email protected]:test"@test.nl
test"@test.nl = wat is ingevuld in het formulier maar dan als [email protected] zonder die dubbele quotes
Nou, vooruit.....
Dit komt dus uit het script waarnaar ik linkte. Als je die nogmaals bekijkt, dan zou je een stabiel script moeten hebben die in 99% van de gevallen moet werken.
Code (php)
1
2
3
4
2
3
4
<?php
$headers = "From: [email protected]". "\r\n";
$headers .= "Reply-To: $email_from". "\r\n";
?>
$headers = "From: [email protected]". "\r\n";
$headers .= "Reply-To: $email_from". "\r\n";
?>
Dit komt dus uit het script waarnaar ik linkte. Als je die nogmaals bekijkt, dan zou je een stabiel script moeten hebben die in 99% van de gevallen moet werken.
Frank Nietbelangrijk op 24/09/2018 11:27:34:
dit kun je ook oplossen met PHP_EOL.
Maar dat is platform-afhankelijk, en heeft betrekking op PHP, en niet op het proces dat e-mail verzorgt. En deze kunnen dus ook van elkaar verschillen, het lijkt mij dan ook onverstandig om die op deze manier aan elkaar te koppelen...
If anything, maak hier een aparte constante van, zodat deze apart (en op één plaats) aangepast kan worden.
Als je het nog mooier wilt doen, dan kan het ook op deze onderstaande manier.
Maar dan heb je wel PHP 7.2 nodig.
Het voordeel is dat PHP zelf bepaalt wat de juiste manier is om deze CRLF te gebruiken.
Maar dan heb je wel PHP 7.2 nodig.
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]';
$subject = 'the subject';
$message = 'hello';
$headers = array(
'From' => '[email protected]',
'Reply-To' => '[email protected]',
'X-Mailer' => 'PHP/' . phpversion()
);
mail($to, $subject, $message, $headers);
?>
$to = '[email protected]';
$subject = 'the subject';
$message = 'hello';
$headers = array(
'From' => '[email protected]',
'Reply-To' => '[email protected]',
'X-Mailer' => 'PHP/' . phpversion()
);
mail($to, $subject, $message, $headers);
?>
Het voordeel is dat PHP zelf bepaalt wat de juiste manier is om deze CRLF te gebruiken.
Gewijzigd op 24/09/2018 14:34:44 door - Ariën -
Ontzettend bedankt nu werkt het IIG!!!
Maar er is wel iets aan de hand, ik zie bij de ene webhost in het Naam/van veld in Gmail het emailadres wat is ingevuld in het formulier, maar via andere webhost zie ik in gmail het gedeelte vóór de apestaart, dus in dit geval info, in het van/from veld? Hoe krijg ik daar de naam of het email uit het formulier?
Dit heb ik geprobeerd maar werkte niet:
//$headers .= 'Reply-To: ' . $naam . ' <' . $email_from . '>' . "\r\n";
dit is wat ik nu heb:
$email_to = "[email protected]";
$email_subject = "Emailformulier via actamasa.be";
$headers = "From: [email protected]". "\r\n";
$headers .= "Reply-To: $email_from". "\r\n";
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
IIG heel erg bedankt voor de hulp!
Maar er is wel iets aan de hand, ik zie bij de ene webhost in het Naam/van veld in Gmail het emailadres wat is ingevuld in het formulier, maar via andere webhost zie ik in gmail het gedeelte vóór de apestaart, dus in dit geval info, in het van/from veld? Hoe krijg ik daar de naam of het email uit het formulier?
Dit heb ik geprobeerd maar werkte niet:
//$headers .= 'Reply-To: ' . $naam . ' <' . $email_from . '>' . "\r\n";
dit is wat ik nu heb:
$email_to = "[email protected]";
$email_subject = "Emailformulier via actamasa.be";
$headers = "From: [email protected]". "\r\n";
$headers .= "Reply-To: $email_from". "\r\n";
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
IIG heel erg bedankt voor de hulp!
Ik raad aan om in zowel From als Reply-to de vissenhaakjes ( < en > ) te gebruiken, waarmee je onderscheid maakt in je naam en mailadres.
Bedankt, tussen de quotes? Hoe precies?




