How to fix “smtp error: could not authenticate” in PHPMailer
PHPMailer is a great tool to send emails safely and easily using SMTP authentication.
But, sometimes this may fail due to incompatible server settings or incorrect SMTP configuration.
“smtp error: could not authenticate” is one such problem reported by website owners when using PHPmailer to send emails.
At Bobcares, we resolve such email errors as part of our Outsourced Technical Support for web hosting providers.
Today, let’s see the top 5 reasons for this error and how our engineers fix it.
What is this “smtp error: could not authenticate” error?
Simply put, this error says: “You try to connect to SMTP server, but it can’t authenticate you“.
So, it could mean,
- The PHP application was able to connect to SMTP server, but the authentication failed.
- Application was not able to connect to the SMTP server.
What’s wrong here? Let’s have a quick look.
Causes and Fixes for “smtp error: could not authenticate” error in phpmailer
1) Wrong SMTP authentication details
Each mail server uses an authentication system to validate users before they can connect and send emails.
When you send an email from your script, the mail server attempts to identify the user with the account’s username and password.
If this authentication fails, the mail server rejects the connection and users receive the error “smtp error: could not authenticate“.
We’ll ensure that correct username and password are given in the mail script.
In case of default email accounts, the full username(firstname.lastname@example.org) should be given in the application.
Also, if the password was recently modified, it should be updated in the email application.
2) Wrong SMTP port and SMTP Host
Users should enter the mail server details in the “$mail->Host” field of the email application.
For example, if you use Gmail as your mail server, the hostname should be “smtp.gmail.com“.
Sometimes, a typo in the hostname or an inactive mail server result in this error.
Similarly, for port numbers, the default SMTP port is 25, but some mail servers use custom ports, such as 587, to avoid spam.
Also, some mail servers will be configured to allow emails only via SSL port 465.
It is also possible that some email providers restrict access to their SMTP port using firewall rules.
Incorrect port entry in SMTP settings or firewall restrictions may cause email delivery errors.
We’ll ensure the DNS connectivity of the mail server with the command.
Also, to identify the correct SMTP port and confirm connectivity to the SMTP port, we use the command:
telnet domain.com 25
We cross-check the SMTP settings in the application and make sure that correct SMTP host and port is used.
If we find any firewall restrictions, the IP should be whitelisted in the firewall.
3) SMTP encryption settings
For secure email transmission, most users prefer SMTP with encryption. SSL and TLS are the 2 encryption protocols used.
But, on some mail servers, SSL/TLS support may not be enabled or the existing SSL certificate may have expired.
What if users specify encryption in their application? Result is “smtp error: could not authenticate” error.
Our Hosting Engineers ensure that Apache and PHP are properly configured on the server with ‘mod_ssl‘ and ‘openssl‘ so that SSL can work on the server.
We’ll also verify the validity of mail server’s SSL certificate using the command:
openssl s_client -connect mail.example.com:25 -starttls smtp
So, the solution here is to properly configure SSL for the server or remove the encryption used in the SMTP settings.
4) Google blocks insecure access
Gmail enforces strict security restrictions.
If an app doesn’t meet these security standards, it may block access because these apps are easier to break into.
Users who authenticate to Gmail server receive the error “smtp error: could not authenticate” because Google considers username and password login as insecure.
Ideally, we reconfigure the app so that it meets the Google standards. If this is not possible, we’ll help website owners to loosen the security restrictions using the below steps.
- Sign in to the Google admin console.
- Go to Security > Basic settings.
- Go to Less Secure Apps.
- Turn on Allow less secure apps.
5) Expired Password
This can happen once in a while.
Some servers are set to auto expire passwords and app maintainers forget to update them in time.
When the application tries to connect, the mail server could not validate the password.
Result is “smtp error: could not authenticate” error.
This usually happens when the account owner missed the notification email about password expiry.
In such cases, we reset the password and also update it in the email application.
We also make sure that the notification email is set correctly, and in some cases, we remove the password expiration set for the mailbox.
“smtp error: could not authenticate” is a common error when users send emails via PHPMailer using SMTP authentication. This error occurs when the application can’t establish an SMTP connection to the mail server. Today, we’ve seen the top 5 causes of this error and how our Dedicated Support Engineers fix them.