SMTP outgoing email not working and how I debugged and fixed it
Hi everyone,
For the record, I'm a total PHP newbie, but managed to fix my problem and want to share so that it may be incorporated in future releases.
I managed to isolate and fix the problem using the following PHP script to exercise the PhpMailer class used by Vanilla:
<?php
//set absolute path of phpmailer in forum
require('forum/vendor/phpmailer/phpmailer/class.phpmailer.php');
require('forum/vendor/phpmailer/phpmailer/class.smtp.php');
//set the following
$SupportName = 'Forum';
$SupportAddress = 'forum@mysite.com';
$SmtpHost = 'smtp.mysite.com';
$SmtpUser = 'forum@mysite.com';
$SmtpPassword = 'Secret';
$SmtpPort = 587;
$SmtpSecurity =''; //blank or tls/ssl
//set recipient details
$RecipientEmail = 'test@mysite.com';
$RecipientName = 'User';
// do not edit bellow
$PhpMailer = new PHPMailer(TRUE);
$PhpMailer->CharSet = 'utf-8';
$PhpMailer->SingleTo = FALSE;
$PhpMailer->IsSMTP();
$PhpMailer->Host = $SmtpHost;
$PhpMailer->Port = $SmtpPort;
$PhpMailer->SMTPSecure = $SmtpSecurity;
$PhpMailer->SMTPAutoTLS = false;
$PhpMailer->SMTPAuth = true;
$PhpMailer->Username = $SmtpUser;
$PhpMailer->Password = $SmtpPassword;
$PhpMailer->SetFrom($SupportAddress, $SupportName, FALSE);
$PhpMailer->AddAddress($RecipientEmail, $RecipientName);
$PhpMailer->Subject = 'toets boodskap';
$PhpMailer->Body = 'Dit werk al weer!';
if (!$PhpMailer->Send()) {
throw new Exception($PhpMailer->ErrorInfo);
}
I had to explicitely add the line "$PhpMailer->SMTPAutoTLS = false;". To apply the fix, edit "library/core/class.email.php" and add the line "$this->PhpMailer->$SMTPAutoTLS = false;" line 343 in "public function send($eventName = '')"
$this->PhpMailer->Host = $smtpHost;
$this->PhpMailer->Port = $smtpPort;
$this->PhpMailer->SMTPSecure = c('Garden.Email.SmtpSecurity', '');
$this->PhpMailer->Username = $username = c('Garden.Email.SmtpUser', '');
$this->PhpMailer->Password = $password = c('Garden.Email.SmtpPassword', '');
$this->PhpMailer->$SMTPAutoTLS = false;
if (!empty($username)) {
$this->PhpMailer->SMTPAuth = true;
}
Regards,
Pieter
1

Comments
This will probably help other people with a similar problem, so thanks for sharing!
But I doubt that it should be incorporated as a "fix", because the root cause is a wrongly configured mailserver:
https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#opportunistic-tls
My themes: pure | minusbaseline - My plugins: CSSedit | HTMLedit | InfiniteScroll | BirthdayModule | [all] - PM me about customizations
VanillaSkins.com - Plugins, Themes and Graphics for Vanillaforums OS