Problem connecting to TLS/SSL SMTP server using explicit mode
-------------------------------------------------------------
Key: NET-421
URL: https://issues.apache.org/jira/browse/NET-421
Project: Commons Net
Issue Type: Bug
Components: SMTP
Affects Versions: 3.0
Reporter: Oliver Saggau
Priority: Critical
Just tried to send an email through gmail servers by doing the following:
AuthenticatingSMTPClient client = new AuthenticatingSMTPClient();
client.connect("smtp.gmail.com", 587); // reply: 220 220 mx.google.com ESMTP
client.login(); // reply: 250 250 mx.google.com at your service
client.execTLS(); // reply: 220 2.0.0 Ready to start TLS
client.auth(AUTH_METHOD.PLAIN, username, password); // exception
...
Unfortunality after execTLS() I get a MalformedServerReplyException. I looked
at the SMTPSClient source code and found out that the reader/writer are wrong
after execTLS() got called. The performSSLNegotiation() method sets _input_ and
_output_ to the new input/output streams from SSLSocket, but the reader/writer
are still pointing to the values set inside _connectAction_().
Possible fix for this issue:
{code}public boolean execTLS() throws SSLException, IOException
{
if (!SMTPReply.isPositiveCompletion(sendCommand("STARTTLS")))
{
return false;
//throw new SSLException(getReplyString());
}
performSSLNegotiation();
_reader = new CRLFLineReader(new InputStreamReader(_input_, encoding));
_writer = new BufferedWriter(new OutputStreamWriter(_output_,
encoding));
return true;
}{code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira