From/Reply field probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Arno Veers

Arno Veers

24/09/2018 10:54:05
Quote Anchor link
Goedemorgen,

Heb een simpel PHP mailscript aangepast IVM het "from" field wat vaak moet verwijzen naar een email@jouwdomein.nl, 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: webmaster@xxxxx.be";
$headers .= "Reply-To: $email_from";


Hier gaat het fout, uit de header:


From: "webmaster@xxxxxa.beReply-To: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
 
PHP hulp

PHP hulp

26/05/2019 16:19:33
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 11:19:13
Quote Anchor link
Je kan ook phpMailer gebruiken.
 
Ben van Velzen

Ben van Velzen

24/09/2018 11:23:00
Quote Anchor link
Daarbuiten, je vergeet de "\r\n" achter de headers.
 
Arno Veers

Arno Veers

24/09/2018 11:25:46
Quote Anchor link
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:

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: webmaster@xxxxx.be"\r\n";
Gewijzigd op 24/09/2018 11:28:49 door Arno Veers
 
Frank Nietbelangrijk

Frank Nietbelangrijk

24/09/2018 11:27:34
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$naam
= 'Testnaam';
$email = 'test@test.nl';
$headers     = 'From: xxxxx.be <webmaster@xxxxx.be>' . PHP_EOL;
$headers    .= 'Reply-To: ' . $naam . ' <' . $email . '>' . PHP_EOL;
?>
Gewijzigd op 24/09/2018 11:32:13 door Frank Nietbelangrijk
 
Arno Veers

Arno Veers

24/09/2018 11:28:08
Quote Anchor link
Is dat misschien waarom de ouptput mislukte?

From: "webmaster@xxxxxa.beReply-To:test"@test.nl

Toevoeging op 24/09/2018 11:36:53:

Dit is het hele script:


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
<?php

if(isset($_POST['email'])) {

$email_to = "me@xxxxx.be";
$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: me@mydomain.be";
$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);  
?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php include 'headertest.inc'; ?>


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: webmaster@xxxxx.be"\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
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 12:58:36
Quote Anchor link
Over je controle op een mailadres:

Gebruik filter_var() om een mailadres te controleren. Nu stel jezelf de reguliere expressie op, en sluit je piet@bloemenwinkeljanssen.amsterdam al uit.
 
Arno Veers

Arno Veers

24/09/2018 13:03:50
Quote Anchor link
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: me@mydomain.be";
$headers .= "Reply-To: $email_from";
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 13:06:51
Quote Anchor link
Als je Googled zie je dat het best meevalt:

https://www.w3schools.com/php/func_filter_var.asp
 
Ben van Velzen

Ben van Velzen

24/09/2018 13:09:10
Quote Anchor link
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
 
Arno Veers

Arno Veers

24/09/2018 13:14:27
Quote Anchor link
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: me@mydomain.be";
$headers .= "Reply-To: $email_from";

de output is nu verkeerd: From: "me@mydomain.beReply-To:test"@test.nl

test"@test.nl = wat is ingevuld in het formulier maar dan als test@test.nl 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
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 13:33:24
Quote Anchor link
Ik raad aan om je headers op deze manier op te bouwen.
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
 
Arno Veers

Arno Veers

24/09/2018 13:35:51
Quote Anchor link
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: me@mydomain.be";
$headers .= "Reply-To: $email_from";

de output is nu verkeerd: From: "me@mydomain.beReply-To:test"@test.nl

test"@test.nl = wat is ingevuld in het formulier maar dan als test@test.nl zonder die dubbele quotes

BVD,

Gr. Arno
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 13:44:49
Quote Anchor link
Als je nou even rustig op de gegeven link kijkt zie je hoe het moet. :-)
 
Arno Veers

Arno Veers

24/09/2018 14:15:00
Quote Anchor link
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: me@mydomain.be";
$headers .= "Reply-To: $email_from";

de output is nu verkeerd: From: "me@mydomain.beReply-To:test"@test.nl

test"@test.nl = wat is ingevuld in het formulier maar dan als test@test.nl zonder die dubbele quotes
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 14:24:08
Quote Anchor link
Nou, vooruit.....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$headers
= "From: me@mydomain.be". "\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.
 
Thomas van den Heuvel

Thomas van den Heuvel

24/09/2018 14:28:07
Quote Anchor link
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.
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 14:30:54
Quote Anchor link
Als je het nog mooier wilt doen, dan kan het ook op deze onderstaande manier.
Maar dan heb je wel PHP 7.2 nodig.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$to
      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = array(
    'From' => 'webmaster@example.com',
    'Reply-To' => 'webmaster@example.com',
    '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 -
 
Arno Veers

Arno Veers

24/09/2018 16:14:01
Quote Anchor link
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 = "info@xxxx.be";
$email_subject = "Emailformulier via actamasa.be";

$headers = "From: info@xxxxx.be". "\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!
 
- Ariën -
Beheerder

- Ariën -

24/09/2018 16:17:54
Quote Anchor link
Ik raad aan om in zowel From als Reply-to de vissenhaakjes ( < en > ) te gebruiken, waarmee je onderscheid maakt in je naam en mailadres.
 
Arno Veers

Arno Veers

24/09/2018 16:19:28
Quote Anchor link
Bedankt, tussen de quotes? Hoe precies?
 

Pagina: 1 2 volgende »



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.