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.