Hoe ook al weer email form html website werkend krijgen?

Status
Niet open voor verdere reacties.
Moet dit op een nieuwe pagina worden geladen, of asynchroon via AJAX?
Als de pagina leeg is, dan moet je de error_reporting eens aanzetten op E_ALL, en display_errors aan.
Of je kan in de log-files kijken.
 
Laatst bewerkt:
nee, dat ajax script ook weggehaald. Dus alleen wat jij en Bron in het begin vertelden. Dus helemaal opnieuw begonnen.
Alleen dus met contact.php - phpmailer - contactformulier wat al in de website html staat.

en nee, dit moet niet op een nieuwe pagina worden geladen,
Als de pagina leeg is, dan moet je de error_reporting eens aanzetten op E_ALL, en display_errors op 1
mag ik vragen waar ik dat doe?

oh ps. witte pagina en geen mail in mijn mailbox, wel zo handig te weten
 
Een beetje zelfredzaamheid bij het programmeren is echt niet verboden hoor. ;)
Zo ben ik ik vroeger ook begonnen met leren programmeren, en dat terwijl er minder informatieve blogjes waren en zelfs meer manuals waar je vaak behoorlijk doorheen moest worstelen. ;)

Als je op Google zoekt dan komt je hier op uit:
https://stackify.com/display-php-errors/

Dus zet bovenaan eens eens neer:
PHP:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>

Dan moet je wel een aantal errors zien wat je hopelijk verder op weg kan helpen.
Zo niet, dan ben ik benieuwd wat je script in contact.php is.
 
Laatst bewerkt:
Zo niet, dan ben ik benieuwd wat je script in contact.php is.
die Bron mij gegeven heeft met daarin uiteraard de nodige veranderingen zoals email en wachtwoord.

ik blijf een witte pagina krijgen met geen errors en geen mail.

Ik ga eten, ik zie het echt niet meer, eigenlijk de hele tijd al niet meer.
Zelfredzaamheid met dit.....neh, nu even niet......(maar je hebt uiteraard wel gelijk hoor, Aar. Echt wel. Het gekke is dat het mij ooit gelukt is ook met jullie hulp maar dat ik het nu totaal niet zie)
 
contact.php

PHP:
<?php
 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
// bestanden
$dir = str_replace('\\', '/', dirname(__FILE__).'/PHPMailer/src');
require $dir . '/Exception.php';
require $dir . '/PHPMailer.php';
require $dir . '/SMTP.php';
 
if (array_key_exists('contact_email', $_POST)) {
    
    date_default_timezone_set('Europe/Amsterdam');
 
    // smtp connection
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->Host = 'mail.xxxxx.nl';
    $mail->SMTPSecure = 'ssl'; // tls, ssl
    $mail->Port = 465;         // tls:587 ssl:465
 
    // smtp authentication
    $mail->SMTPAuth = true;
    $mail->Username = 'info@example.nl';
    $mail->Password = 'xxxxx';
 
    // debug  geen:0  client:1  server/client:2
    $mail->SMTPDebug = 0;
 
    // FROM: existing mailbox in your domain
    // DO NOT use the submitter's address here
    $mail->setFrom('noreply@example.nl', 'No Reply');
 
    // TO: your address
    $mail->addAddress('info@example.nl');
 
    // optional cc and bcc
    // $mail->addCC('cc@example.nl');
    // $mail->addBCC('bcc@example.nl');
    
    if (array_key_exists('contact_name', $_POST) && array_key_exists('contact_message', $_POST)) {
                
        if ($mail->addReplyTo($_POST['contact_email'], $_POST['contact_name'])) {
            
            $mail->Subject = 'Contact website';
 
            $message  = '<div>Naam: '    . $_POST['contact_name']    . '</div>';
            $message .= '<div>Email: '   . $_POST['contact_email']   . '</div>';
            $message .= '<div>Bericht: ' . $_POST['contact_message'] . '</div>';
 
            // html part
            $msg = str_replace(PHP_EOL, '<br>', $message);
            $msg = str_replace('\\', '|', $msg);
            $mai->Body = $msg;
 
            // text part
            $txt = strip_tags($message);
            $mail->AltBody = $txt;
 
            // send the message, check for errors
            if (!$mail->send()) {
                 echo 'Sorry, er gaat wat mis. Probeer het later nog eens.';
                if ($mail->SMTPDebug <> 0) {
                    echo $mail->ErrorInfo;
                }
            } else {
                 echo 'Bedankt voor uw mail.';
            }
        } else {
             echo 'Ongeldige naam of emailadres.';
        }
    } else {
         echo 'Ongeldige naam of bericht.';
    }
} else {
     echo 'Formulier ingediend zonder e-mailadres.';
}
 
Laatst bewerkt door een moderator:
Als het op bepaalde momenten niet lukt, omdat je in een tunnelvisie begint te raken...
Leg het dan even naast je neer, rust uit, en ga de volgende dag verder. :)

Zet je code even tussen
PHP:
 tags, dan zien we hier nette kleurtjes voor PHP-scripting.
Ik zie hier alleen niet de code staan voor de error-afhandeling, zoals ik vroeg.

Bij een losse aanroep zie ik wel netjes een foutmelding uit je script. :)
[I]Formulier ingediend zonder e-mailadres.[/I]
 
Laatst bewerkt:
Ik zie hier alleen niet de code staan voor de error-afhandeling, zoals ik vroeg.
nee hahaha, die had ik er weer uit gehaald.

Ik zie nergens een error, Formulier ingediend zonder e-mailadres.
ik had wel degelijk een emailadres ingevuld.

edit: verhip, ik nu ook op de laptop via ff. hm.

Zet je code even tussen
PHP:
 tags, dan zien we hier nette kleurtjes voor PHP-scripting.[/QUOTE]
gedaan
 
Laatst bewerkt:
Firefox, Chrome, Edge, Internet Explorer of welke browser dan ook.
Overal krijg je een foutmelding als die via PHP geserveerd wordt. PHP is immers een serverside programmeertaal die niks met jouw eigen PC te doen heeft.

Zet die error functie gewoon eens aan.
Dan moet er wel meer duidelijkheid zijn wat er mis is. Ik vermoed iets met de mail.

Sowieso is het een kwestie van debuggen, door wat echo's op diverse plekken in het script te zetten, zodat je kan zien welke route het script aflegt door je statements.
Veel if'jes hebben al een een else die aangeroepen wordt als er niet aan de voorwaarde wordt voldaan. Dus het probleem lijkt niet erg lastig te vinden te zijn.
 
Laatst bewerkt:
opnieuw een email gedaan met emailadres, zie screenshot.
Daarna op verzenden en ik krijg een witte pagina, zie screeshot.

Daarna op enter gekllkt en dan krijg ik de melding, zie screenshot
 

Bijlagen

  • Screenshot 2021-08-25 at 19-00-39 https test sdevriessloopwerken nl.png
    Screenshot 2021-08-25 at 19-00-39 https test sdevriessloopwerken nl.png
    2,9 KB · Weergaven: 18
  • Screenshot 2021-08-25 at 19-01-53 https test sdevriessloopwerken nl.png
    Screenshot 2021-08-25 at 19-01-53 https test sdevriessloopwerken nl.png
    3,9 KB · Weergaven: 18
  • Screenshot 2021-08-25 at 19-00-05 S de Vries Sloopwerken.png
    Screenshot 2021-08-25 at 19-00-05 S de Vries Sloopwerken.png
    10,3 KB · Weergaven: 19
Laatst bewerkt:
Wordt er überhaupt wel ge-POST?

Zet eens na lijn 10 dit neer:
PHP:
echo "<pre>".print_r($_POST,true)."</pre>";
Als het goed is moet je dan een array-boom zien met de data uit je $_POST.

Dat je na een ENTER die melding wel ziet, komt doordat je het formulier opnieuw aanroept, en je POST-gegevens verdwijnen.
 
Laatst bewerkt:
https://test.example.nl/contact.php
lees maar wat er staat. (er staat dus naam, emailadres en bericht)

ik zit mij wat af te vragen:
omdat het op een subdomein is gemaakt als test, (ik heb nog ergens een reserve) klopt dan het emailadres wel van waar het naar toe gaat?
Dat is immers zonder test ervoor. Dus example.nl ipv test.example.nl (als voorbeeld)
Of moet dat niet uitmaken?
Overigens gaat de mail als het werkt naar mij toe, dus wordt geforwarded.
 
Laatst bewerkt door een moderator:
Als ik het formulier verstuur, dan zie ik dit.
Code:
Array
(
    [contact_name] => test
    [contact_email] => test@test.nl
    [contact_message] => testetwqwetwt
)
Die velden worden dan gewoon herkend.
Daar is niks mis mee.

Hoe staat de SMTPdebug op lijn 29 ingesteld?
Het gaat via een externe SMTP mail-server, dus dit kan geen invloed hebben op het PHP-script.
Wel kan dit gebeuren als je mail() zou gebruiken en de provider wat veiligheidsbarrières had opgeworpen tegen spamming.

Eerlijk gezegd kan ik mij niets anders bedenken dan dat het daaraan ligt. Het script kent bij elke if een nette else.
Dus, al zou er iets misgaan, dan zou je minimaal overal een nette foutmelding bij moeten zien.



Hostingproviders staan altijd nog te juichen als je mails via PHPmailer naar het SMTP-postkantoor brengt, in plaats van dat je dit door de webserver zelf laat doen.
Dus deze weg via PHPmailer en SMTP is zeker goed!
 
Laatst bewerkt:
Zet die eens op 2 .
 
Deze regel
Code:
$mail->setFrom('noreply@sdevxxxxx.nl', 'No Reply');
moet een bestaand emailadres op jouw domein zijn.
Als dit niet zo is, dan kan een email door SPF checks worden tegengehouden.

En natuurlijk tijdens het testen even $mail->SMTPDebug op 2 zetten ;)
 
Even wat dingen op een rijtje gezet die je kan nalopen ;)

Klopt het pad naar de mappen?
Zet om dit te testen onder de volgende regel even echo $dir;
Code:
$dir = str_replace('\\', '/', dirname(__FILE__).'/PHPMailer/src');
echo $dir;

Heb je de servergegevens ingevuld?
Code:
$mail->Host = '_______';    // bijvoorbeeld 'mail.ziggo.nl'
$mail->SMTPSecure = 'ssl';  // 'ssl' of 'tls'
$mail->Port = 465;          // 465 (bij ssl) of 587 (bij tls)

SetFrom moet een bestaand emailadres van het domein zijn
Code:
$mail->setFrom('_____@_____.nl', 'Mijn Bedrijf');

Kloppen de inloggegevens van $mail->setFrom
Code:
$mail->Username = '_____@_____.nl';  // emailadres of emailnaam of emailcode ofzo
$mail->Password = '_____';

Vul om te testen even jouw eigen emailadres in bij
Code:
$mail->addAddress('_____@_____.nl');
 
Laatst bewerkt:
Hoi @femke98. Ik val in het topic en heb het doorgelezen. Ik zou zelf iets eenvoudiger eerst starten, het stap voor stap ontleden.
Dus:
1) Werkt het contactformulier zonder Google captcha?

2) Zo nee, dan zou ik een testmail.php bestandje plaatsen in de root en aanroepen via websitenaam/testmail.php
Deze code kan erin staan en pas e.e.a. aan.
Code:
<?php 
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );
    $from = "emailtest@domeinnaam.nl";
    $to = "info@jouwmailadres.nl";
    $subject = "PHP Mail Test script";
    $message = "This is a test to check the PHP Mail functionality";
    $headers = "From:" . $from;
    mail($to,$subject,$message, $headers);
    echo "Test email sent";
?>

3) Pas als dat werkt, dan contactformulier plaatsen en testen.

4) Pas als dat werkt, dan buigen over Google captcha probleem.

Succes!
 
Of natuurlijk PHPmailer gebruiken i.p.v. de mail() functie van PHP. Die is prima te debuggen, en ik heb wel eens gehoord dat er hostings zijn die mail() ernstig beperkt of uitgezet hebben.

Maar het is inderdaad een idee om stapje voor stapje te kijken of het werkt. Als het fout gaat kan je eenvoudiger de fout localiseren.
 
Laatst bewerkt:
Offtopic: Ha @Aar, hernieuwde kennismaking; zal even wennen zijn niet meer @PHP4U te schrijven :)

En nog een idee @femke98, de site in WP maken? :) Maar ach, zo is het natuurlijk ook leuk en vast leerzaam. Voor een 1 pagina site is alleen PHP wel snel.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan