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.

Reply via email to