commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivan Melnikov (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (EMAIL-128) HtmlEmail doesn't close connection to smtp server
Date Sun, 21 Jul 2013 02:44:48 GMT

     [ https://issues.apache.org/jira/browse/EMAIL-128?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ivan Melnikov updated EMAIL-128:
--------------------------------

    Description: 
***Prehistory:

I tried to send html email to smtp server from my GWT application servlet by using this official
site user guide example http://commons.apache.org/proper/commons-email/userguide.html the
"HtmlEmail" usage snippet...

Sending message with smtp requires authentication and encryption so I combined two examples
and used code like a (see my snippets)

snippet A : 
------------------------------------
public class Send{

public synchronized SendReport send(MyMessage msg){
...
// Create the email message
		  HtmlEmail email = new HtmlEmail();
		  
		  
		  try {
			  
			  
email.setHostName("smtp.mail.com");

			  email.setSmtpPort(465);

			  email.setAuthenticator(new DefaultAuthenticator(USER_NAME,PASSWORD));
			  email.setSSLOnConnect(true);			  
			  
			  email.addTo(TO, "test");
			  
			  email.setFrom(FROM, msg.getFrom());
			  email.setSubject(msg.getSubject());			  
			  		  
			  String message=msg.getMessage();
			  
			  email.setHtmlMsg(message);

			   email.setTextMsg("Your email client does not support HTML messages");

			   email.send();			  
			  
			  
		} catch (EmailException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
			
		}
}//method end...
}//class end...
------------------------------------


snippet B: the gwt/rpc servlet 	

public class SendServiceImpl extends RemoteServiceServlet implements SendService {

	static Send send=new Send();
	
	@Override
	public SentReport sendMessage(MyMessage message) {
				
		return this.getMessageSend().sendMessage(message);
	}
	
	private synchronized Send getSend()
	{
		return this.send;
	}
}


------------------------------------

***Problem description:

Message sending works fine and I can see email in my inbox; The problem occurs when I stop
Tomcat and close the web application browser tab (FF for example); for some reason right after
that my web browser (FireFox) cannot download web pages (throws connection timeout error...)
though Internet connection is working fine :S I tried to download web pages with another internet
browser Chrome for example but it behaves all the same :( I tried to see opened ports with
"netstat -an" cmd and it shows me a long list of opened ports (which I don't have until send
email code as "email.send();" activated...); That makes me think that for some reason the
JavaMail connection to smtp server is NOT CLOSED or something similar?
The problem disappears only after I restart my OS (Windows XP Pro SP3);  

So I suspect some bug which prevents smtp server connection closing after message send; I
cannot say for sure but maybe socket connection doesn't close after message has been sent
and received... I am not sure what should I add to my code to solve the problem because I
followed all user guide examples which don't show how to close smtp server connection manually
or something so I am a confused how to fix it :( Maybe it is some kind of memory leak due
to JavaMail I don't know...

I dearly need your help because it is quite complicated issue as for me that makes impossible
to use HtmlEmail class in my gwt application (its server side code)


***My project uses

- IDE : Eclipse Indigo 3.7
- GWT SDK 2.3
- JavaMail API 1.4.5
- commons-email-1.3.1
- Tomcat 7/ Jetty - in eclipse
- JRE: version 7 Update 25 build 1.7.0_25-b17
- OS: Windows XP Pro SP3






  was:
***Prehistory:

I tried to send html email to smtp server from my GWT application servlet by using this official
site user guide example http://commons.apache.org/proper/commons-email/userguide.html the
"HtmlEmail" usage snippet...

Sending message with smtp requires authentication and encryption so I combined two examples
and used code like a (see my snippets)

snippet A : 
------------------------------------
public class Send{

public synchronized SendReport send(MyMessage msg){
...
// Create the email message
		  HtmlEmail email = new HtmlEmail();
		  
		  
		  try {
			  
			  
email.setHostName("smtp.mail.com");

			  email.setSmtpPort(465);

			  email.setAuthenticator(new DefaultAuthenticator(USER_NAME,PASSWORD));
			  email.setSSLOnConnect(true);			  
			  
			  email.addTo(TO, "test");//send to me...
//			  email.addTo(msg.getEmail());//send notification...
			  
			  email.setFrom(FROM, msg.getFrom());
			  email.setSubject(msg.getSubject());			  
			  		  
			  String message=msg.getMessage();
			  
			  email.setHtmlMsg(message);

			  // set the alternative message
			  email.setTextMsg("Your email client does not support HTML messages");

			  // send the email
			  email.send();			  
			  
			  
		} catch (EmailException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
			
		}
}//method end...
}//class end...
------------------------------------

snippet B: the gwt/rpc servlet 	

public class SendServiceImpl extends RemoteServiceServlet implements SendService {

	static Send send=new Send();
	
	@Override
	public SentReport sendMessage(MyMessage message) {
				
		return this.getMessageSend().sendMessage(message);
	}
	
	private synchronized Send getSend()
	{
		return this.send;
	}
}


------------------------------------

***Problem description:

Message sending works fine and I can see email in my inbox; The problem occurs when I stop
Tomcat and close the web application browser tab (FF for example); for some reason right after
that my web browser (FireFox) cannot download web pages (throws connection timeout error...)
though Internet connection is working fine :S I tried to download web pages with another internet
browser Chrome for example but it behaves all the same :( I tried to see opened ports with
"netstat -an" cmd and it shows me a long list of opened ports (which I don't have until send
email code as "email.send();" activated...); That makes me think that for some reason the
JavaMail connection to smtp server is NOT CLOSED or something similar?
The problem disappears only after I restart my OS (Windows XP Pro SP3);  

So I suspect some bug which prevents smtp server connection closing after message send; I
cannot say for sure but maybe socket connection doesn't close after message has been sent
and received... I am not sure what should I add to my code to solve the problem because I
followed all user guide examples which don't show how to close smtp server connection manually
or something so I am a confused how to fix it :( Maybe it is some kind of memory leak due
to JavaMail I don't know...

I dearly need your help because it is quite complicated issue as for me that makes impossible
to use HtmlEmail class in my gwt application (its server side code)


***My project uses

- IDE : Eclipse Indigo 3.7
- GWT SDK 2.3
- JavaMail API 1.4.5
- commons-email-1.3.1
- Tomcat 7/ Jetty - in eclipse
- JRE: version 7 Update 25 build 1.7.0_25-b17
- OS: Windows XP Pro SP3






    
> HtmlEmail doesn't close connection to smtp server
> -------------------------------------------------
>
>                 Key: EMAIL-128
>                 URL: https://issues.apache.org/jira/browse/EMAIL-128
>             Project: Commons Email
>          Issue Type: Bug
>    Affects Versions: 1.3.1
>            Reporter: Ivan Melnikov
>            Priority: Blocker
>
> ***Prehistory:
> I tried to send html email to smtp server from my GWT application servlet by using this
official site user guide example http://commons.apache.org/proper/commons-email/userguide.html
the "HtmlEmail" usage snippet...
> Sending message with smtp requires authentication and encryption so I combined two examples
and used code like a (see my snippets)
> snippet A : 
> ------------------------------------
> public class Send{
> public synchronized SendReport send(MyMessage msg){
> ...
> // Create the email message
> 		  HtmlEmail email = new HtmlEmail();
> 		  
> 		  
> 		  try {
> 			  
> 			  
> email.setHostName("smtp.mail.com");
> 			  email.setSmtpPort(465);
> 			  email.setAuthenticator(new DefaultAuthenticator(USER_NAME,PASSWORD));
> 			  email.setSSLOnConnect(true);			  
> 			  
> 			  email.addTo(TO, "test");
> 			  
> 			  email.setFrom(FROM, msg.getFrom());
> 			  email.setSubject(msg.getSubject());			  
> 			  		  
> 			  String message=msg.getMessage();
> 			  
> 			  email.setHtmlMsg(message);
> 			   email.setTextMsg("Your email client does not support HTML messages");
> 			   email.send();			  
> 			  
> 			  
> 		} catch (EmailException e) {
> 			// TODO Auto-generated catch block
> 			e.printStackTrace();
> 			
> 			
> 		}
> }//method end...
> }//class end...
> ------------------------------------
> snippet B: the gwt/rpc servlet 	
> public class SendServiceImpl extends RemoteServiceServlet implements SendService {
> 	static Send send=new Send();
> 	
> 	@Override
> 	public SentReport sendMessage(MyMessage message) {
> 				
> 		return this.getMessageSend().sendMessage(message);
> 	}
> 	
> 	private synchronized Send getSend()
> 	{
> 		return this.send;
> 	}
> }
> ------------------------------------
> ***Problem description:
> Message sending works fine and I can see email in my inbox; The problem occurs when I
stop Tomcat and close the web application browser tab (FF for example); for some reason right
after that my web browser (FireFox) cannot download web pages (throws connection timeout error...)
though Internet connection is working fine :S I tried to download web pages with another internet
browser Chrome for example but it behaves all the same :( I tried to see opened ports with
"netstat -an" cmd and it shows me a long list of opened ports (which I don't have until send
email code as "email.send();" activated...); That makes me think that for some reason the
JavaMail connection to smtp server is NOT CLOSED or something similar?
> The problem disappears only after I restart my OS (Windows XP Pro SP3);  
> So I suspect some bug which prevents smtp server connection closing after message send;
I cannot say for sure but maybe socket connection doesn't close after message has been sent
and received... I am not sure what should I add to my code to solve the problem because I
followed all user guide examples which don't show how to close smtp server connection manually
or something so I am a confused how to fix it :( Maybe it is some kind of memory leak due
to JavaMail I don't know...
> I dearly need your help because it is quite complicated issue as for me that makes impossible
to use HtmlEmail class in my gwt application (its server side code)
> ***My project uses
> - IDE : Eclipse Indigo 3.7
> - GWT SDK 2.3
> - JavaMail API 1.4.5
> - commons-email-1.3.1
> - Tomcat 7/ Jetty - in eclipse
> - JRE: version 7 Update 25 build 1.7.0_25-b17
> - OS: Windows XP Pro SP3

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message