Blogs / Alessandro Dellanna / Ez 4.3 and SMTP AUTH info

Ez 4.3 and SMTP AUTH info

Monday 02 May 2011 1:36:23 pm

  • Currently 5 out of 5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

By : Alessandro Dellanna

Ez, SMTP and the AUTH info syntax (maybe a new book title...)

On my new site I have created a simple Request Information Form but when I try to submit apparently all goes ok, but no mail were send to anybody...

I've installed a new ez site from scratch as usual. I've completed the install phase and when I'm going to setup the SMTP server for Collected Info I have changed my usual SMTP server with another one with user AUTHENTICATION required.

In the site.ini settings I have inserted the correct smtp server name, user and password but when I try to fill the Request Information Form the error.log (in /var/log of ez root) display the following message:

eZSMTPTransport::sendMail:
exception 'ezcMailTransportException' with message 'An error occured while sending or receiving mail. SMTP server does not accept the AUTH command.'

I've changed all params but nothing to do. I've asked my provider about the capabilities of the SMTP server bau all seem to be ok.

Searching for the error int the source code, after a lot of time I've discovered a file located in $ezroot/lib/ezc/Mail/src/transports/smtp/smtp_transport.php.

At the line 583 you can find the function

protected function login()

and below the code

preg_match( "/250-AUTH[= ](.*)/", $response, $matches );
if ( count( $matches ) > 0 )
{
    $methods = explode( ' ', trim( $matches[1] ) );
}
if ( count( $matches ) === 0 || count( $methods ) === 0 )
{
    throw new ezcMailTransportSmtpException( "A SMTP server does not accept the AUTH command." );
}

As you can see there is exactly the error I have received from the error.log.

I've attached at the end of the error message the entire RESPONSE from my SMTP server and change the line from

throw new ezcMailTransportSmtpException( "A SMTP server does not accept the AUTH command." );

to

throw new ezcMailTransportSmtpException( "A SMTP server does not accept the AUTH command: {$response}." );

And voilĂ .... I found the problem.... look at the SMTP response:

AUTH command: 250-authsmtp.register.xxx
250-PIPELINING
250-8BITMIME
250-SIZE 0
250 AUTH LOGIN PLAIN

For a misteriusly reason my SMTP server send a welcome message with 250 AUTH... and not 250-AUTH so the preg_match function doesn't find any AUTH capability in the SMTP SERVER and the entire function fail.

Changing the portion of code accordingly to the message response of your SMTP server can solve the problem, but I'm thinking this behaviour can be programmed or parametrized....

alooa !!!

Blog Post Discussion

Ez 4.3 and SMTP AUTH info