PHPMailer error: SMTP Error: Could not authenticate. Error: SMTP Error: Could not authenticate

I use the following function for sending e-mail using PHPMailer:

	public function test_emailAction()
	{
		require_once         	(APP_PATH.'/lib/PHPMailer/src/PHPMailer.php');				
		require_once         	(APP_PATH.'/lib/PHPMailer/src/Exception.php');
		require_once         	(APP_PATH.'/lib/PHPMailer/src/SMTP.php');
		
		$account=		"email@gmail.com";
		$password=		"**********";
		
		$from_email=	"from_email@gmail.com";
		$from_name=		"from_name";
		$to_email=		"to_email@gmail.com";
		$to_name=		"to_name";
		
		$subject="Test subject";
		$msg="Test message"; 
				
		$mail = new PHPMailer(true);
		
		$mail->IsSMTP();
		$mail->SMTPDebug = 0;
		$mail->CharSet = 'UTF-8';
		$mail->Host = "smtp.gmail.com";
		$mail->SMTPAuth= true;
		$mail->Port = 465;
		$mail->Username= $account;
		$mail->Password= $password;
		$mail->SMTPSecure = 'ssl';
		
		//Recipients
		$mail->setFrom($from_email, $from_name);
		$mail->addAddress($to_email, $to_name);	
		
		//Content
		$mail->isHTML(true);
		$mail->Subject = $subject;
		$mail->Body = $msg;		
		
		if(!$mail->send()){
			echo "Mailer Error: " . $mail->ErrorInfo;
		}else{
			echo "E-Mail has been sent";
		}
		
	}

The function is within a class. Above/outside of the class I have:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

but I get the following error message:

Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not authenticate. in

When I use Port 587 instead of Port 465 the error message is:

Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP connect() failed.

What am I doing wrong? Thank you in advance

The only sample code I found quickly for this seemed to use port 587, but also use “tls” for `SMTPSecure" rather than ssl as you have it.

You had to go to myaccount.google.com → “Sign-in & security” → “Apps with account access”, and turn “Allow less secure apps” to “ON” (near the bottom of the page).

1 Like

Definitely don’t do that! Why would you allow less secure apps when you can also make the current app more secure by changing ssl to tls as @droopsnoot suggests?

1 Like

@droopsnoot & @rpkamp I adjusted it (used tls instead off ssl)

$mail->SMTPSecure = 'tls';

as you both suggested, but still an error. This is the complete error :

Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host. in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php:1914 Stack trace: #0 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1741): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1497): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Fri, 29 J...', '<strong>This is...') #2 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1336): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Controller/Page.php(144): PHPMailer\PHPMailer\PHPMailer->send() #4 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(67): Controller_Page->test_emailAction(Array) #5 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(48): Router->dispatch(Array) #6 /home/donalug212/domains/ in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php on line 1914

The example for GMail by PHPMailer suggests to use port 587 instead of 465

@rpkamp Adjusted that as well and now I get the Could not authenticate error:

Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not authenticate. in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php:1927 Stack trace: #0 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1741): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1497): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Fri, 29 J...', '<strong>This is...') #2 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1336): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Controller/Page.php(144): PHPMailer\PHPMailer\PHPMailer->send() #4 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(67): Controller_Page->test_emailAction(Array) #5 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(48): Router->dispatch(Array) #6 /home/donalug212/domains/donaldbo in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php on line 1927

@rpkamp & @droopsnoot . Got is working. I commentet out IsSMTP

//$mail->IsSMTP();

Not sure if it has any adverse consequences but it is working

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.