weer een contactformulier raadsel

Status
Niet open voor verdere reacties.
Ik krijg zometeen visite. Geen zorgen. Er komt maar 1 persoon. Dus corona proef.

Ik ga komende week als ik tijd heb wel eens kijken of ik ermee uit de voeten kan.

Bedankt alvast.
 
Laat tzt even weten of het werkt dan maakt php4u het formulier :p :D
Als je in config.php ergens niet weet wat er ingevuld moet worden dan helpen we daarmee.
 
Laat tzt even weten of het werkt dan maakt php4u het formulier :p :D
Als je in config.php ergens niet weet wat er ingevuld moet worden dan helpen we daarmee.
Prima :)
 
@rob1970 Wil je graag fake emailadressen opgeven?
Hiermee voorkom je een hoop spam op de door jouw gegeven emailadressen.
In de php code heb ik de emailadressen gewijzigd in een.persoon@example.org

Website linkjes noemen is geen probleem zolang het niet te vaak voorkomt in een topic. Ik heb sommige linkjes gewijzigd in example.nl
 
instructies van hostnet

Ik kreeg van hostnet de volgende instructies om het probleem misschien op te kunnen lossen.

Ik blijf het een vreemd verhaal vinden omdat ik nu deze website tijdelijk op 4 verschillende domeinnamen heb geplaatst.
1 van de andere domeinnamen waar ik de website tijdelijk op heb gezet om te testen wordt ook gehost bij hostnet en hier werkt het formulier wel.

Op 3 domeinnamen werkt het formulier dus uitstekend en komen de mails binnen. Alleen op de domeinnaam waar hij hoort te werken komt de mail niet aan.


Maar goed, dit is waar hostnet nu mee komt:


E-mail versturen vanaf je website
Wanneer je met een PHP-e-mailscript e-mails verstuurt vanaf jouw website bij Hostnet, kan het voorkomen dat je e-mails niet worden afgeleverd. Dit los je op door een correct 'from'- en 'envelope from'-adres in te stellen in je e-mailscript. Dit moet een bestaand e-mailadres zijn.

'From'- en 'envelope from'-adres
Hieronder staat een voorbeeld van een juist e-mailscript. In dit voorbeeld pas je de variabele 'afzender@jouwdomeinnaam.nl' aan. Dit doe je door '-f' voor je e-mailadres te plaatsen. Bijvoorbeeld: '-fafzender@jouwdomeinnaam.nl'. Let op dat je geen spatie plaatst tussen '-f' en je e-mailadres.

Structuur
De PHP-mailfunctie hanteert de volgende structuur: 'ontvanger, onderwerp, inhoud, e-mailheaders, 'envelope from'-adres'. Zorg dat je hier het 'envelope from'-adres als laatste parameter gebruikt, zoals getoond in bovenstaand voorbeeld.

Hier het voorbeeld van een php script waarvan hostnet zegt dat het moet werken:
PHP:
<?PHP

 

$onderwerp = "E-mailonderwerp";
$inhoud = "Mijn tekstbericht.";
$ontvanger = "ontvanger@jouwdomeinnaam.nl";
$afzender = "afzender@jouwdomeinnaam.nl";
$headers = array();
$headers[ ] = "MIME-Version: 1.0";
$headers[ ] = "Content-type: text/plain; charset=utf-8";
$headers[ ] = "From: Afzendernaam <{$afzender}>";
$headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
$headers[ ] = "X-Mailer: PHP/".phpversion();
mail($ontvanger, $onderwerp, $inhoud, implode("\r\n", $headers), "-f".$afzender);

?>


Nu weet ik dus weer niet door mijn ZEER beperkte kennis van php hoe ik dit moet toepassen.

Moet ik mijn gehele huidige php script vervangen door dit script?
Moet ik dit script ergens toevoegen aan mijn huidige php script?
Of moet ik een klein gedeelte van mijn huidige php script vervangen door dit script?

Hier voor de volledigheid het php script wat ik nu gebruik:
PHP:
<?php
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_POST['message'])) {
	echo 'U heeft niet alle velden ingevuld!';
	exit;
}

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



$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.'
Emailadres: '.$email.'
Telefoonnummer: '.$telefoonnummer.'

Bericht: '.$message.'
------------------------------------';

if(mail('info@auto-ontsmetting.nl', 'Bericht van website auto-ontsmetting', $message, 'From: '.$email)) {
   header('location:https://auto-ontsmetting.nl/bedankt.html');
} else {
 echo "Er is wat bij deze website iets mis gegaan met het versturen van de mail";
}
?>


En hier het contactformulier:
Code:
<form action="post.php" method="post" class="banner_form">
							<div class="sec-left">
								<label class="contact-form-text">Naam</label>
								<input placeholder="" name="naam" type="text" required>
							</div>
						  <div class="sec-right">
								<label class="contact-form-text">Emailadres</label>
								<input placeholder="" name="email" type="email" required>
						  </div>
						  <div class="sec-left">
								<label class="contact-form-text">Telefoonnummer</label>
								<input placeholder="" name="telefoonnummer" type="text" required>
						  </div>
                            <div class="form-tx contact-field3">
                              <label class="contact-form-text">Bericht</label>
                              <textarea placeholder="" name="message" type="text" required></textarea>
                            </div>
                            <input type="submit" value="Verzend">                           
                        </form>
 
Ik zou zeggen: Kijk logisch en probeer eens wat.
Daar leer je immers van. Ik wil graag helpen, maar dan verwacht ik wel graag enige inzet terug ;).

Het belangrijkste zijn de juiste headers en de -f
 
Laatst bewerkt:
Daar heb je een punt.

Het probleem is alleen dat ik door mijn tijdelijke bijbaan als koerier enorm krap in mijn tijd zit en de website eigenlijk vorige week al klaar en werkend online had moeten zijn.

Ben maandagavond om 22.00 uur vertrokken naar lyon en was gisterenavond om 22.30 terug.
En vanavond moet ik weer naar lyon en ben dan pas morgenavond laat weer terug.

Maar je hebt wel gelijk.

Ik ga vandaag tussendoor wel eea proberen.
Wie weet lukt het me wel en daar steek ik meer van op.


wordt vervolgd.
 
Is goed. Laat maar weten of het lukt en wat je hebt geprobeerd. :)
 
Heb het script zo aangepast:

PHP:
<?PHP
 
 
 
$onderwerp = "Bericht van website auto-ontsmetting";
$email = "email";
$message = "message";
$telefoonnummer = "telefoonnummer";
$ontvanger = "info@auto-ontsmetting.nl";
$afzender = "-fafzender@auto-ontsmetting.nl";
$headers = array();
$headers[ ] = "MIME-Version: 1.0";
$headers[ ] = "Content-type: text/plain; charset=utf-8";
$headers[ ] = "From: Afzendernaam <{$afzender}>";
$headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
$headers[ ] = "X-Mailer: PHP/".phpversion();
mail($ontvanger, $onderwerp, $email, $telefoonnummer, $message, implode("\r\n", $headers), "-f".$afzender);

if(mail('info@auto-ontsmetting.nl', 'Bericht van website auto-ontsmetting', $message, 'From: '.$email)) {
   header('location:https://auto-ontsmetting.nl/bedankt.html');
} else {
 echo "Er is wat bij deze website iets mis gegaan met het versturen van de mail";
}
 
?>

Na invullen en verzenden werd ik keurig doorverwezen naar deze pagina https://auto-ontsmetting.nl/bedankt.html
Maar de mail komt weer niet binnen.

Ik heb hier ($afzender = "-fafzender@auto-ontsmetting.nl";) het woordje afzender vervangen door "info" maar dat werkte ook niet.

Ben ik al wel in de juiste richting aan het werken of ben ik er zó ver van af dat het compleet anders moet?

Jullie zullen wel gek worden van mij. Misschien een andere carriere overwegen. haha
 
PHP documentatie voor mail()
Returns true if the mail was accepted for delivery

Met andere woorden, je duwt de email de deur uit en dan heb je geen idee meer wat ermee gebeurt, een probleem kan je niet achterhalen.
Als je PHPMailer gebruikt dan zie je alles op je scherm gebeuren en weet je precies waar het fout gaat, dat is een stuk makkelijker debuggen.
 
Die -f hoort niet voor de afzender in $afzender.

Bestaat het mailadres van de afzender ook als mailbox of alias?

En wat doet $telefoonnummer in de mail-functie?
Kijk eens naar www.php.net/mail voor uitleg over de opbouw van de mail-functie. Een telefoonnummer hoort daar niet bij.
 
Laatst bewerkt:
Over die -f.

Dit zegt hostnet:

'From'- en 'envelope from'-adres
Hieronder staat een voorbeeld van een juist e-mailscript. In dit voorbeeld pas je de variabele 'afzender@jouwdomeinnaam.nl' aan. Dit doe je door '-f' voor je e-mailadres te plaatsen. Bijvoorbeeld: '-fafzender@jouwdomeinnaam.nl'. Let op dat je geen spatie plaatst tussen '-f' en je e-mailadres.
 
En lees ook even over de mail-functie, een het $telefoonnummer daarin. Dat klopt ook niet, en dat is hoogstwaarschijnlijk de oorzaak dat het mailen nog faalt.

Die -f staat al in de functie als je goed kijkt, dus waarom nog handmatig toevoegen.
 
PHP documentatie voor mail()
Returns true if the mail was accepted for delivery

Met andere woorden, je duwt de email de deur uit en dan heb je geen idee meer wat ermee gebeurt, een probleem kan je niet achterhalen.
Als je PHPMailer gebruikt dan zie je alles op je scherm gebeuren en weet je precies waar het fout gaat, dat is een stuk makkelijker debuggen.

Ik begrijp dat php mailer beter is.
Maar daar heb ik nu gewoonweg geen tijd voor om daar in te duiken.
De website had vorige week al werkend online moeten zijn.
 
Fix eerst dat $tefoonnummer die niet in de mail-functie hoort, en haal die -f weg voor je mailadres. Dan moet het hoogstwaarschijnlijk werken.
 
En lees ook even over de mail-functie, een het $telefoonnummer daarin. Dat klopt ook niet, en dat is hoogstwaarschijnlijk de oorzaak dat het mailen nog faalt.

Die -f staat al in de functie als je goed kijkt, dus waarom nog handmatig toevoegen.

Ik heb het telefoonnummer eruit gehaald, mail komt nog niet aan.
Het script staat nu zo:
PHP:
<?PHP
 
 
 
$onderwerp = "Bericht van website auto-ontsmetting";
$email = "email";
$message = "message";
$ontvanger = "info@auto-ontsmetting.nl";
$afzender = "-fafzender@auto-ontsmetting.nl";
$headers = array();
$headers[ ] = "MIME-Version: 1.0";
$headers[ ] = "Content-type: text/plain; charset=utf-8";
$headers[ ] = "From: Afzendernaam <{$afzender}>";
$headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
$headers[ ] = "X-Mailer: PHP/".phpversion();
mail($ontvanger, $onderwerp, $email, $message, implode("\r\n", $headers), "-f".$afzender);

if(mail('info@auto-ontsmetting.nl', 'Bericht van website auto-ontsmetting', $message, 'From: '.$email)) {
   header('location:https://auto-ontsmetting.nl/bedankt.html');
} else {
 echo "Er is wat bij deze website iets mis gegaan met het versturen van de mail";
}
 
?>


Maar in mijn originele script (wat dus al jaren normaal werkt) en ook dus op die 3 andere domeinnamen waar ik de website op geplaatst heb gebruik ik dus dit script:
PHP:
<?php
if (!isset($_POST['naam']) || !isset($_POST['email']) || !isset($_POST['message'])) {
    echo 'U heeft niet alle velden ingevuld!';
    exit;
}
 
$naam = htmlspecialchars($_POST['naam']);
$email = htmlspecialchars($_POST['email']);
$telefoonnummer = htmlspecialchars($_POST['telefoonnummer']);
$message = htmlspecialchars($_POST['message']);
 
 
 
$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.'
Emailadres: '.$email.'
Telefoonnummer: '.$telefoonnummer.'
 
Bericht: '.$message.'
------------------------------------';
 
if(mail('info@auto-ontsmetting.nl', 'Bericht van website auto-ontsmetting', $message, 'From: '.$email)) {
   header('location:https://auto-ontsmetting.nl/bedankt.html');
} else {
 echo "Er is wat bij deze website iets mis gegaan met het versturen van de mail";
}
?>


Hier staat toch ook "$telefoonnummer" in.
 
Kijk eens goed waar dat staat? En wat php.net/mail zegt?
Zet jij ook altijd een telefoonnummer op een envelop?

En wat doet $email?

Met andere woorden, waarom tel ik in je nieuwe script 6 ingevulde argumenten (gescheiden met een komma) terwijl er 5 mogelijk zijn?
1) afzender
2) onderwerp
3) bericht
4) headers met extra informatie
5) optionele parameters, die hostnet onder andere voorschrijft
 
Laatst bewerkt:
Fix eerst dat $tefoonnummer die niet in de mail-functie hoort, en haal die -f weg voor je mailadres. Dan moet het hoogstwaarschijnlijk werken.

Ik heb het nu zo staan en getest. Mail komt nog niet aan:

PHP:
<?PHP
 
 
 
$onderwerp = "Bericht van website auto-ontsmetting";
$email = "email";
$message = "message";
$ontvanger = "info@auto-ontsmetting.nl";
$afzender = "afzender@auto-ontsmetting.nl";
$headers = array();
$headers[ ] = "MIME-Version: 1.0";
$headers[ ] = "Content-type: text/plain; charset=utf-8";
$headers[ ] = "From: Afzendernaam <{$afzender}>";
$headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
$headers[ ] = "X-Mailer: PHP/".phpversion();
mail($ontvanger, $onderwerp, $email, $message, implode("\r\n", $headers), "-f".$afzender);

if(mail('info@auto-ontsmetting.nl', 'Bericht van website auto-ontsmetting', $message, 'From: '.$email)) {
   header('location:https://auto-ontsmetting.nl/bedankt.html');
} else {
 echo "Er is wat bij deze website iets mis gegaan met het versturen van de mail";
}
 
?>
 
Waarom nu twee email() functies?

Eerst op lijn 16 (niet volgende de procedures (zie hierboven), en daarna op lijn 18, met de controle (goed zo), maar zonder de aanpassingen van hostnet?
Als je $email uit lijn 18 haalt, en de controle om die functie zet, dan moet het wel werken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan