Sorry, correction:- Should be:
line.isContinued() is always returning true Regards, Chee Seng Chua Chee Seng wrote: > > Hi Rick, > > It does not work. When executed, the debugging console is showing these > lines:- > > 220-xxx.xxx.xxx ESMTP Exim x.xx #1 Mon, 20 Aug 2007 16:29:11 +0800 > 220-We do not authorize the use of this system to transport unsolicted, > 220 and/or bulk email. > > It then stopped there until a Read timed out exception is thrown. Seems > to me that the client is not sending EHLO/HELO to the server. > > I decompiled SMTPTransport and SMTPReply (I don't have the modified source > code) to see what can be wrong, I think getWelcome() method in > SMTPTransport is causing the problem:- > > protected boolean getWelcome() > throws MessagingException > { > SMTPReply line = getReply(); > if(line.isError()) > return false; > for(; line.isContinued(); getReply()); > return true; > } > > In the for loop, the line.isContinued() is always returning false as it > does not get setting to new reference to SMTPReply returned by getReply() > call in the for loop. I think something like the following should work:- > > protected boolean getWelcome() > throws MessagingException > { > SMTPReply line = getReply(); > if(line.isError()) > return false; > > while(line.isContinued()) > line = getReply(); > > return true; > } > > As it is decompiled code, I am not sure if your source code is like the > above, so it is just my guess. I would be happy to help to test again with > new builds. :-) > > Best Regards, > Chee Seng > > > Rick McGuire wrote: >> >> Chua Chee Seng wrote: >>> Hi Rick, >>> >>> Thanks for the reply. I would be happy to help out testing it. >>> However, I >>> am very new to this community and some guidance is really appreciated. >>> :-) >>> >> This should be fairly simple. I built a 1.1.1 version of SMTP code and >> placed it here: >> >> http://people.apache.org/~rickmcguire/stage-javamail/geronimo-javamail-transport-1.1.1.jar >> >> Just replace the geronimo-javamail-transport jar file in your 1.1.1 >> server assembly, and retry your program. That will verify that my fix >> is working correctly and I'll be able to commit my fix for the problem. >> Unfortunately, the fix won't ship until the next Geronimo update, but >> you'll have a corrected jar to run with while you're on 1.1.1. >> >> Rick >> >> >>> Regards, >>> Chee Seng >>> >>> >>> >>> Rick McGuire wrote: >>> >>>> This is the first time I've encountered an SMTP server that sends a >>>> response back like this. I've opened a JIRA for this issue: >>>> >>>> https://issues.apache.org/jira/browse/GERONIMO-3427 >>>> >>>> and I'll take a look at fixing this. Since I don't have access to an >>>> SMTP server that behaves this way, are you willing/able to help try out >>>> potential fixes? >>>> >>>> Rick >>>> >>>> Chua Chee Seng wrote: >>>> >>>>> Hi, >>>>> >>>>> I am trying to use the Geronimo Javamail. I have setup the resource >>>>> and >>>>> resource-ref stuff and try to send a mail from the application. I >>>>> turn >>>>> off >>>>> the debug flag and see the following in the console:- >>>>> >>>>> ... >>>>> 220-xxx.xxx.xxx ESMTP Exim x.xx #1 Mon, 20 Aug 2007 16:29:11 +0800 >>>>> EHLO xxxxx >>>>> 220-We do not authorize the use of this system to transport >>>>> unsolicted, >>>>> HELO xxxxx >>>>> 220 and/or bulk email. >>>>> ... >>>>> >>>>> An exception is then thrown complaining that it fails to send HELO to >>>>> the >>>>> server. >>>>> >>>>> When using telnet xxxx 25 to my SMTP server, I found out that once >>>>> connected, the SMTP is sending back three lines of text:- >>>>> 220-xxx.xxx.xxx ESMTP Exim x.xx #1 Mon, 20 Aug 2007 16:29:11 +0800 >>>>> 220-We do not authorize the use of this system to transport >>>>> unsolicted, >>>>> 220 and/or bulk email. >>>>> >>>>> I then try with a local SMTP using Apache JAMES, which successfully >>>>> send >>>>> the >>>>> mail. When I try to telnet localhost 25, it is sending back only one >>>>> line >>>>> of text:- >>>>> >>>>> 220 xxxx SMTP Server (JAMES SMTP Server 2.3.1) ready Mon, 20 Aug 2007 >>>>> 16:32:26 +0800 (SGT) >>>>> >>>>> I am suspecting Geronimo Javamail implementation (version 1.1.1) >>>>> cannot >>>>> be >>>>> used on SMTP who sends back more than 1 lines of 220 service ready. I >>>>> investigate the source code of >>>>> org.apache.geronimo.javamail.transport.smtp.SMTPTransport and study >>>>> that >>>>> getReply() method is using the receiveLine() method to read response >>>>> from >>>>> the server. As receivedLine() is using end of stream (read() ==-1) or >>>>> CR >>>>> or >>>>> LF to indicate end of response from server, so in the above scenario >>>>> each >>>>> 220 are identified as a response from the server. After receiving the >>>>> first >>>>> 220, the client send a EHLO but fails as the server is sending back >>>>> the >>>>> 2nd >>>>> 220. The client then try to send a HELO but receive the 3rd 220, >>>>> which >>>>> it >>>>> finally gave up and throw a fails to send HELO exception. >>>>> >>>>> I have switch to Sun Javamail implementation to solve the problem. >>>>> However, >>>>> I personally prefer to use Geronimo implementation due to installation >>>>> issue. Is there a better way, or is it in the later version (Geronimo >>>>> 1.2, >>>>> 2.0, I didn't try :P), the Geronimo Javamail can handle SMTP that >>>>> sends >>>>> more than 1 lines of 220 back to client (like the SMTP server that I >>>>> am >>>>> facing)? >>>>> >>>>> Thanks in advance for any advice. >>>>> >>>>> Best Regards, >>>>> Chee Seng >>>>> >>>>> >>>> >>>> >>> >>> >> >> >> > > -- View this message in context: http://www.nabble.com/Geronimo-1.1.1%27s-Javamail-does-not-work-for-some-SMTP-server-with-more-than-1-beginning-lines-tf4297515s134.html#a12286745 Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.