If you get the error Message: Failed to authenticate on SMTP server with username “****” using 0 possible authenticators
Then try to remove the username and password from the configuration file.
Context
When using the Swiftmailer, a common PHP emailer
This example specifically talks about the Yii2 configuration file, but likely applies to other frameworks.
Here’s an example of the offending config
config/web.php (or console.php or a common.php file if you merge the two).
[
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'plugins' => [
['class' => 'Openbuildings\Swiftmailer\CssInlinerPlugin']
],
"username" => "smtp-auth-user",
"password" => "*****",
"host" => 'exchange.local',
"port" => 25,
]
]
]
];
The exception seen was
This exception caused major headache.
After investigation it turned out that removing the username and password from the transport caused it to work.
It seems that the server we were on was in a corporate environment and SMTP authentication was disabled but Swiftmailer was trying to authenticate and failed.
Bonus – Enabling SMTP Logging
[
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'enableSwiftMailerLogging' => true,
'transport' => [
'class' => 'Swift_SmtpTransport',
"host" => 'localhost',
"port" => 25,
],
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
[
// Log the emails
'class' => 'yii\log\FileTarget',
'categories' => ['yii\swiftmailer\Logger::add'],
'logFile' => '@app/runtime/logs/email.log',
],
],
]
];
With the above config you should now see detailed logs in the runtime/logs/email.log file.