Ik gebruik PHPmailer met een gmail server om mails te laten versturen. Met het script hieronder werkte het eerst perfect. Alleen nu na een tijd (geen code verandert) geeft het deze error aan:

Fatal error: Uncaught phpmailerException: SMTP Error: Could not authenticate. in D:\Xampp\htdocs\school4us\wp-content\themes\school4us\vendor\phpmailer\phpmailer\class.phpmailer.php:1692 Stack trace: #0 D:\Xampp\htdocs\school4us\wp-content\themes\school4us\vendor\phpmailer\phpmailer\class.phpmailer.php(1540): PHPMailer->smtpConnect(Array) #1 D:\Xampp\htdocs\school4us\wp-content\themes\school4us\vendor\phpmailer\phpmailer\class.phpmailer.php(1335): PHPMailer->smtpSend('Date: Wed, 30 J...', 'This is a multi...') #2 D:\Xampp\htdocs\school4us\wp-content\themes\school4us\vendor\phpmailer\phpmailer\class.phpmailer.php(1213): PHPMailer->postSend() #3 D:\Xampp\htdocs\school4us\wp-content\themes\school4us\functions\mail\sendMail.php(34): PHPMailer->send() #4 D:\Xampp\htdocs\school4us\wp-content\themes\school4us\functions\mail\sendMail.php(7): sendMail('<!doctype html>...', 'Uw contactverzo...', 'janmoes96@live....', 'info@school4us....') #5 D:\Xampp\htdocs\school4us\wp-content\themes\school4us\page-contact.php(46): sendTemplateMai in D:\Xampp\htdocs\school4us\wp-content\themes\school4us\vendor\phpmailer\phpmailer\class.phpmailer.php on line 1692



<?php

require_once(__DIR__.'/../../vendor/phpmailer/phpmailer/PHPMailerAutoload.php');

function sendTemplateMail($body, $data, $subject, $receiver, $sender){
    $template = Timber::compile($body, $data);
    sendMail($template, $subject, $receiver, $sender);
}

function sendMail($template, $subject, $receiver, $sender){

    $mail = new PHPMailer(true);                        // Enable verbose debug output

    $mail->isSMTP();                                      // Set mailer to use SMTP     // TCP port to connect to

    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth = true;
    $mail->SMTPOptions = array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true));
    $mail->Username = "[email protected]";
    $mail->Password = "test";

    $mail->setFrom($sender);
    $mail->addAddress($receiver);     // Add a recipient
    $mail->addReplyTo($sender);

    $mail->isHTML(true);

    $mail->Subject = $subject;
    $mail->Body = $template;
    $mail->AltBody = $template; //$mail->AltBody = $template; //

    return $mail->send();
}

Een plugin heeft daar niet echt effect bij. Ik creeër het thema helemaal zelf met php en twig, verder gebruik ik alleen acf custom fields, daarmee maak ik zelf velden in waarmee de gebruiker data kan invoeren wat ik vervolgens kan inladen in het php bestand. Het is niet echt dat ik een wordpress shortcode zoals [contact-form] erin kan gooien.
Hoe zie je het anders voor je?
Wou je de bestanden van Wordpress zelf aanpassen om de validatie toe te voegen?

Zelf vind ik een dergelijke reCaptcha controle en onderdeel van een contactformulier. Misschien moet jezelf een bestaand contactformulier dupliceren ('forken') zodat deze Twig gaat ondersteunen.

Maar daarnaast vraag ik me af waarom je Twig in Wordpress gebruikt? Wordpress heeft gewoon een standaard PHP-languaged syntax in PHP.

Reageren