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#a12286630
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.