Raadsel contactformulier

Status
Niet open voor verdere reacties.

rob1970

Gebruiker
Lid geworden
14 jan 2012
Berichten
296
Op deze website staat een contactformulier voor een reactie achter te laten in een gastenboek: https://bit.ly/2EA8nNY

Ik laat deze email even bij mij aankomen om te testen of het formulier werkt.

Als ik het formulier invul met mijn zakelijke email (info@met-rob.com), komt de email keurig netjes aan.

Als ik een willekeurig anders emailadres invul, komt de mail niet aan.
De website geeft wel de melding dat de mail correct is verzonden.

Het php formulier wat ik gebruik werkt bij zo'n beetje 30 andere websites prima, ik heb dit nog niet eerder meegemaakt.

Ik hoop echt dat iemand weet hoe dit zou kunnen.

Dit is het php formulier wat ik gebruik:

<?php
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_POST['bericht'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}

$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$telefoonnummer = htmlspecialchars($_POST['telefoonnummer']);
$bericht = htmlspecialchars($_POST['bericht']);

$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
naam: '.$naam.'
email: '.$email.'
telefoonnummer: '.$telefoonnummer.'
bericht: '.$bericht.'
------------------------------------';

mail('bedrijf@example.nl', 'Bedrijf Naam', $message, 'From: '.$email);

header('location:http://kattentrimsalonsuus.nl/gastenboek-bedankt.html');
?>
 
Laatst bewerkt door een moderator:
Je mag je code ook tussen
PHP:
-tags plaatsen, het laatste knopje in de werkbalk boven het reactie invoerveld.

Het feit dat de mail niet aankomt kan diverse redenen hebben:
- Het wordt (overijverig) als spam gemarkeerd
- De mailserver heeft vertraging of heeft een storing
- De mailserver is niet goed ingesteld

Met andere woorden: Het is heel lastig te doorgronden waarom een mail niet aankomt. 
Dat je script zegt dat de mail verzonden is, zegt niks over het feit dat de mail aangekomen is. 

Om het even duidelijk in beeld te brengen:
De melding geeft alleen aan dat je script het heeft doorgegeven aan de interne post-persoon. Die brengt het vervolgens naar de brievenbus, waarmee jij er geen controle meer over hebt. Zodra de brief in de brievenbus gaat, dan is de post er voor verantwoordelijk.

Ik zie dat je in je script niet controleert of mail() gelukt is (of de interne postophaler is langsgeweest). Hoe weet je nu of het afleveren aan het mailprogramma op de server gelukt is? Ook daar kan wel eens wat fout gaan.
 
Laatst bewerkt:
Ik zie net dat die berichten van de andere emails inderdaad in de spambox terecht zijn gekomen.

"Ik zie dat je in je script niet controleert of mail() gelukt is (of de interne postophaler is langsgeweest). Hoe weet je nu of het gelukt is?"

Ik heb geen idee hoe dat moet.

Wel alvast bedankt voor je snelle reactie
 
Gewoon een if-controle eromheen:

Code:
if(mail('robarnoe@live.nl', 'Gastenbericht Kattentrimsalon Suus', $message, 'From: '.$email)) {

// De mail is afgeleverd aan het interne mailprogramma.
header('Location: http://kattentrimsalonsuus.nl/gastenboek-bedankt.html');
exit(); // script behoort te stoppen op dit moment.

} else {
// De mail is niet afgeleverd aan het interne mailprogramma
header('Location: http://kattentrimsalonsuus.nl/gastenboek-fout.html');
exit();

}
Het zorgt meer voor robuustheid van de afhandeling, en is geen deur-tot-deur garantie dat de mail aankomt.
Ikzelf gebruik bij sterke voorkeur vaak de headers op deze site: http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders
Als je die dan goed invult (bij voorkeur bovenaan je mail()-functie plaatsen), en 'From: '.$email aanpast naar $headers, dan heb je ook meteen robuuste headers die je mail beschrijven.

Wederom ook geen deur-tot-deur garantie, maar het maakt het wel robuuster, en mogelijk werkt het dan wel prima of beter.
 
Laatst bewerkt:
Wederom bedankt.

Ik wil niet vervelend zijn maar ik weet niet precies waar ik dit zou moeten plaatsen.

Is het teveel gevraagd dat jij dit even op de juiste plaats wegzet in mijn formulier.

Niet dat ik te lui ben maar anders ben ik straks weer een paar uur verder
 
Het is gewoon een kwestie van de een-na-laatste mail(.......) regel en die van de daaropvolgende header(....) te vervangen door mijn code.
Vergeet ook niet om gastenboek-fout.html aan te maken. het spreekt wel voor zich wat je daarin kan zetten voor informatie naar je gebruiker toe ;).
 
Laatst bewerkt:
Wederom ... verder
Nu die exit kan ook door die worden vervangen maar is noodzakelijk voor de veiligheid.
validatie is hier ook belangerijk (vooral na het punt) test@domein.extentieenofkwaadaardigecode
Het laaste segment kan zeer ongewenste inhoud bevatten dus indien dit ; bevatten ... niet toelaten

verder zal je best eens de versie bekijken en een versieupdate van je script uitvoeren naar php7.2+

ps . één uur is laag ingeschat neem er maar een dag voor dit juist te krijgen.

... getenv('REMOTE_ADDR');...
zal vermoedelijk niet aanwezig zijn dient dan ergens $_SERVER['REMOTE_ADDR'] te worden na validatie
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan