toivo blog
web and other experiments
  • joomla
    • Validating Email Domain
    • Accessing External Databases
    • Fetching User Custom Fields in Joomla 4
    • Updating articles by deleted authors
    • how to list users with custom fields
    • finding the origin of cryptic messages
    • careful with uninstall
    • adding time to logged-In users
    • How to Debug Email in Joomla
    • Troubleshooting SMTP Connection in Joomla 3.x
    • Gmail as SMTP host in Joomla 3.x
  • hiking
    • viking way part 1
    • viking way part 2
  1. You are here:  
  2. Home
  3. joomla
  4. Joomla

Troubleshooting SMTP connection in Joomla 3.x

If your Joomla! site has issues in connecting to your SMTP mail server, it is possible to get a detailed log of all the messages exchanged between your Joomla site and the SMTP server.  Inspecting this low level transaction log allows you to see what is going wrong between the two servers and then get your IT department or hosting provider to resolve any connectivity issues. 

Go to Extensions - Plugins and configure the system plugin 'System - Debug' with the following settings:

  • Allowed Groups: Super Users
  • Log Priorities:  All
  • Log Categories: mail
  • Log Almost Everything

 

20180425 system debug plugin 20180425 system debug logging

 

Go to Global Configuration and turn on the debug option in the System tab - Debug Settings - Debug System.  

20180425 debug settings

 

Go to the Server tab - Mail Settings and click the button Send Test Mail. 

20180425 mail settings

 

The test result, success or failure, will then get displayed as a system message, but you can download the detailed log file 'everything.php' from the Joomla log folder, usually administrator/logs, or, if your site was installed much earlier, from the /logs folder in the main Joomla folder.

20180425 everything example

 And this is the email we would like to receive from the website:

20180415 test mail

More about logging from the Joomla! Documentation at https://docs.joomla.org/Using_JLog

Details
Written by: Toivo Talikka
Category: Joomla
Published: 26 April 2018
Hits: 12045

How to debug SMTP mail in Joomla 3.6.5

If you have issues with SMTP emails, you can get Joomla to record all the detailed messages exchanged with your SMTP server.  Inspecting the low level transaction log often allows you to see what is going on between the two servers and resolve any connectivity issues with your IT or hosting provider.  This custom method is quite simple to set up if you have FTP or SSH access to the Joomla folder in your web server.

This SMTP debug option involves a temporary modification to a file in the JMail class, an extension of the PHPMailer library. Warning: core modifications are not recommended and you should revert the file back to the original version as soon as possible.

First make a backup copy of the file your are going to modify, libraries/joomla/mail/mail.php.  Then edit this file, mail.php, and add the following lines to the beginning of the function useSMTP(), after line 634:

// 20170221 SMTP log
$this->SMTPDebug = 4; // maximum level data output
// $this->Debugoutput = 'error_log'; // use the PHP error log, as configured in php.ini
$this->Debugoutput = function($message, $level) { $file = 'mail_log.txt'; $config = JFactory::getConfig(); $logfile = $config['log_path'] . '/' . $file;
$log = fopen($logfile, 'a'); fwrite ($log, $message); fclose($log);};
// 20170221 end

After you click the button Send Test Mail in the Global Configuration or any other mail function, you can download the file 'mail_log.txt' from the Joomla log folder, usually administrator/logs.  

Remember to restore the original version of the file mail.php before the log file grows too much.

And here is the way you can log the mail debug entries by using the standard debug option.  Configure the plugin 'System - Debug' with the following key settings:

  • Allowed Groups: Super Users
  • Log Priorities:  All
  • Log Categories: mail
  • Log Almost Everything

Turn on the debug option in Global Configuration and you can find all the details of the SMTP connection requests and responses with error codes from the file administrator/logs/everything.php.

 

 

 

Details
Written by: Toivo Talikka
Category: Joomla
Published: 21 February 2017
Hits: 23514
  • joomla
  • smtp

Gmail as SMTP Host in Joomla 3.6.5

Make sure you have Google 2-Step Verification turned on: https://www.google.com/landing/2step/

As explained in this article: https://support.google.com/accounts/answer/185833?hl=en, create an application specific password, "App Password", 'my-app-password' below, for your SMTP connection: https://security.google.com/settings/security/apppasswords

Now you can use the following mail settings:

Mailer SMTP
SMTP Host smtp.gmail.com
SMTP Port 587
SMTP Security STARTTLS
SMTP Authentication Yes
SMTP Username This email address is being protected from spambots. You need JavaScript enabled to view it.
SMTP Password my-app-password

Details
Written by: Toivo Talikka
Category: Joomla
Published: 16 December 2016
Hits: 11145

Gmail as SMTP server in Joomla 3.6.0

If your site used to send its emails through the Gmail SMTP server and stopped after the latest Joomla update, you can restore the sending by modifying one of Joomla files.  Modifying core files is not recommended but sometimes it has to be done as an emergency measure, until a permanent remedy has been implemented in the applications involved.

Versions of Joomla before 3.6.0 used to work with Gmail by using an app password, created from the 2-Step Verification page of Google Accounts at https://security.google.com/settings/security/apppasswords

After the update to version 3.6.0, the connection to smtp.gmail.com reports a failure in the verification of the server certificate:

[28-Jul-2016 09:54:34 UTC] PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:

error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in C:\www\joomla360\libraries\vendor\phpmailer\phpmailer\class.smtp.php on line 343

As instructed under "PHP 5.6 certificate verification failure" at https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting, you can set the Options parameter to bypass the verification of the server certificate.

The following code can be added as a workaround to the beginning of the function useSmtp() in the file libraries/joomla/mail/mail.php:

   // 20160729 workaround for certificate verification failure - ref. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
    $this->SMTPOptions = array(
    'ssl' => array(
      'verify_peer' => false,
      'verify_peer_name' => false,
      'allow_self_signed' => true
    )
   );
    // 20160729 end
Details
Written by: Toivo Talikka
Category: Joomla
Published: 29 July 2016
Hits: 21472
  1. Debugging SMTP Mail in Joomla 3.5.0
  2. Debugging SMTP Mail in Joomla 3.4.8
  3. Adding Time to Logged-In Users
  4. Gmail as SMTP server for Joomla

Page 3 of 5

  • 1
  • 2
  • 3
  • 4
  • 5

Visitors

We had 58 visitors online in the last 2 days.