diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index b845f799bb6..cd6f64c3242 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -496,17 +496,31 @@ class SMTPs return $_retVal; } } + + // Default authentication method is LOGIN + if (empty($conf->global->MAIL_SMTP_AUTH_TYPE)) $conf->global->MAIL_SMTP_AUTH_TYPE = 'LOGIN'; + // Send Authentication to Server // Check for errors along the way - $this->socket_send_str('AUTH LOGIN', '334'); - - // User name will not return any error, server will take anything we give it. - $this->socket_send_str(base64_encode($this->_smtpsID), '334'); - - // The error here just means the ID/password combo doesn't work. - // There is not a method to determine which is the problem, ID or password - if ( ! $_retVal = $this->socket_send_str(base64_encode($this->_smtpsPW), '235') ) - $this->_setErr(130, 'Invalid Authentication Credentials.'); + switch ($conf->global->MAIL_SMTP_AUTH_TYPE) { + case 'PLAIN': + $this->socket_send_str('AUTH PLAIN', '334'); + // The error here just means the ID/password combo doesn't work. + $_retVal = $this->socket_send_str(base64_encode("\0" . $this->_smtpsID . "\0" . $this->_smtpsPW), '235'); + break; + case 'LOGIN': + default: + $this->socket_send_str('AUTH LOGIN', '334'); + // User name will not return any error, server will take anything we give it. + $this->socket_send_str(base64_encode($this->_smtpsID), '334'); + // The error here just means the ID/password combo doesn't work. + // There is not a method to determine which is the problem, ID or password + $_retVal = $this->socket_send_str(base64_encode($this->_smtpsPW), '235'); + break; + } + if (! $_retVal) { + $this->_setErr(130, 'Invalid Authentication Credentials.'); + } } else {