Recently one of our clients reported an issue with the SMTP server they use. The problem occurred only in Mail.dll. Outlook was working correctly.
The exception we are getting is:
Limilabs.Client.ServerException: 5.5.1 Invalid command
at Limilabs.Client.SMTP.Smtp.[1](String [1], Boolean
)
at Limilabs.Client.SMTP.Smtp.LoginDIGEST(String user, String password)
at Limilabs.Client.SMTP.Smtp.UseBestLogin(String user, String password)
at ..Forms.ComposeEmailForm.SendEmail()The SMPT settings are as follows:
Outgoing mail server: smtp.livemail.co.uk
Port: 587
Use SSL: false
After some investigation it turned out that livemail.co.uk incorrectly advertises CRAM-MD5 login method:
The server EHLO response is misleading:
S: 250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5
S: 250-ENHANCEDSTATUSCODES
S: 250-8BITMIME
S: 250-DSN
S: 250 AUTH PLAIN LOGIN CRAM-MD5
Notice that it sends DIGEST-MD5 in first AUTH response and it doesn’t send it in the second one. Unfortunately Mail.dll uses the first response and it causes it to use CRAM:
C: AUTH DIGEST-MD5
the command fails, because it’s most likely not implemented by the server or not turned on:
S: 500 5.5.1 Invalid command
AUTH PLAIN and AUTH LOGIN methods do work without any problems
using (Smtp client = new Smtp()) { client.Connect("smtp.livemail.co.uk"); client.Login("user", "pass"); //... client.Close(); }
using (Smtp client = new Smtp()) { client.Connect("smtp.livemail.co.uk"); client.LoginPLAIN("user", "pass"); //... client.Close(); }