Index: C:/Lab/VOID/projects/james-trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java =================================================================== --- C:/Lab/VOID/projects/james-trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java (revision 168299) +++ C:/Lab/VOID/projects/james-trunk/src/java/org/apache/james/smtpserver/SMTPHandler.java (working copy) @@ -661,34 +661,41 @@ } else { resetState(); state.put(CURRENT_HELO_MODE, COMMAND_EHLO); + + ArrayList esmtpextensions = new ArrayList(); + + esmtpextensions.add(new StringBuffer(theConfigData.getHelloName()) + .append(" Hello ") + .append(argument) + .append(" (") + .append(remoteHost) + .append(" [") + .append(remoteIP) + .append("])").toString()); + // Extension defined in RFC 1870 long maxMessageSize = theConfigData.getMaxMessageSize(); if (maxMessageSize > 0) { - responseString = "250-SIZE " + maxMessageSize; - writeLoggedResponse(responseString); + esmtpextensions.add("SIZE " + maxMessageSize); } + if (authRequired) { - //This is necessary because we're going to do a multiline response - responseBuffer.append("250-"); - } else { - responseBuffer.append("250 "); + esmtpextensions.add("AUTH LOGIN PLAIN"); + esmtpextensions.add("AUTH=LOGIN PLAIN"); } - responseBuffer.append(theConfigData.getHelloName()) - .append(" Hello ") - .append(argument) - .append(" (") - .append(remoteHost) - .append(" [") - .append(remoteIP) - .append("])"); - responseString = clearResponseBuffer(); - if (authRequired) { - writeLoggedResponse(responseString); - responseString = "250-AUTH LOGIN PLAIN"; - writeLoggedResponse(responseString); - responseString = "250 AUTH=LOGIN PLAIN"; + + // Iterator i = esmtpextensions.iterator(); + for (int i = 0; i < esmtpextensions.size(); i++) { + if (i == esmtpextensions.size() - 1) { + responseBuffer.append("250 "); + responseBuffer.append((String) esmtpextensions.get(i)); + writeLoggedFlushedResponse(clearResponseBuffer()); + } else { + responseBuffer.append("250-"); + responseBuffer.append((String) esmtpextensions.get(i)); + writeLoggedResponse(clearResponseBuffer()); + } } - writeLoggedFlushedResponse(responseString); } }