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();
}
Allereerst is het handig dat je je realiseert dat jouw probleem waarschijnlijk niet uniek is.
Dus vraag je het ome Goegel: "phpmailer gmail could not authenticate".
Het eerste resultaat wijst je mogelijk al in de goede richting: blijkbaar moet je tegenwoordig "less secure apps" expliciet toegang geven maar het is natuurlijk beter dat je het certificaat op een fatsoenlijke manier inspecteert, al die beveiliging is er niet voor niets.
Een andere mogelijke oorzaak is dat het netwerk vanuit je webserver naar buiten toe wordt geblokkeerd ofzo.
Lokaal met xampp doet het het nu. maar op de daadwerkelijke website die online staat krijg ik deze error:
2019-02-02 18:26:08 SMTP ERROR: Failed to connect to server: Cannot assign requested address (99) 2019-02-02 18:26:08 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Ik heb de site bij yourhosting, dus host het niet zelf. Met de stappen die je me eerder stuurde werkt het gek genoeg wel lokaal maar niet op die webserver