Erro ao tentar enviar email em rede com proxy

Tenho o seguinte código


      
	    public void enviarMail() {  
	    	String mailSMTPServer = "smtp.gmail.com";  
		      String  mailSMTPServerPort = "465";  
	        String from = "meuemail@gmail.com"; 
	       
	        String to = "email@hotmail.com";
	        String subject = "Teste";
	        String message = "Teste teste";
	    	
	        Properties props = new Properties();  
	  
	                // quem estiver utilizando um SERVIDOR PROXY 
	        		//descomente essa parte e atribua as propriedades do SERVIDOR PROXY utilizado  
	              
	                props.setProperty("proxySet","true"); 
	                props.setProperty("socksProxyHost","172.18.7.251"); // IP do Servidor Proxy 
	                props.setProperty("socksProxyPort","25");  // Porta do servidor Proxy 
	               
	  
	        props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP  
	        props.put("mail.smtp.starttls.enable","true");   
	        props.put("mail.smtp.host", mailSMTPServer); //server SMTP do GMAIL  
	        props.put("mail.smtp.auth", "true"); //ativa autenticacao  
	        props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)  
	        props.put("mail.debug", "true");  
	        props.put("mail.smtp.port", mailSMTPServerPort); //porta  
	        props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket  
	        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
	        props.put("mail.smtp.socketFactory.fallback", "false");  
	          
	        //Cria um autenticador que sera usado a seguir  
	        SimpleAuth auth = null;  
	        auth = new SimpleAuth ("meuemail@gmail.com","senha");  
	          
	        //Session - objeto que ira realizar a conexão com o servidor  
	        /*Como há necessidade de autenticação é criada uma autenticacao que 
	         * é responsavel por solicitar e retornar o usuário e senha para  
	         * autenticação */  
	        Session session = Session.getDefaultInstance(props, auth);  
	        session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email  
	  
	        //Objeto que contém a mensagem  
	        Message msg = new MimeMessage(session);  
	  
	        try {  
	            //Setando o destinatário  
	            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));  
	            //Setando a origem do email  
	            msg.setFrom(new InternetAddress(from));  
	            //Setando o assunto  
	            msg.setSubject(subject);  
	            //Setando o conteúdo/corpo do email  
	            msg.setContent(message,"text/plain");  
	  
	        } catch (Exception e) {  
	            System.out.println(">> Erro: Completar Mensagem");  
	            e.printStackTrace();  
	        }  
	          
	        //Objeto encarregado de enviar os dados para o email  
	        Transport tr;  
	        try {  
	            tr = session.getTransport("smtp"); //define smtp para transporte  
	            /* 
	             *  1 - define o servidor smtp 
	             *  2 - seu nome de usuario do gmail 
	             *  3 - sua senha do gmail 
	             */  
	            tr.connect(mailSMTPServer, "meuemail@gmail.com", "senha");  
	            msg.saveChanges(); // don't forget this  
	            //envio da mensagem  
	            tr.sendMessage(msg, msg.getAllRecipients());  
	            tr.close();  
	        } catch (Exception e) {  
	            // TODO Auto-generated catch block  
	            System.out.println(">> Erro: Envio Mensagem");  
	            e.printStackTrace();  
	        }  
	  
	    }  
	}  
	  
	//clase que retorna uma autenticacao para ser enviada e verificada pelo servidor smtp  
	class SimpleAuth extends Authenticator {  
	    public String username = null;  
	    public String password = null;  
	  
	  
	    public SimpleAuth(String user, String pwd) {  
	        username = user;  
	        password = pwd;  
	    }  
	  
	    protected PasswordAuthentication getPasswordAuthentication() {  
	        return new PasswordAuthentication (username,password);  
	    }  
	}   

Quando é executado o método, aparecem os seguinte erros

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
  nested exception is:
	java.net.ConnectException: Connection timed out: connect
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
	at javax.mail.Service.connect(Service.java:295)
	at javax.mail.Service.connect(Service.java:176)
	at com.wts.email.EnviarEmail.enviarMail(EnviarEmail.java:103)
	at com.wts.bean.EmailBean.enviaEmail(EmailBean.java:21)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:772)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
	at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:205)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
	... 38 more

Obs: O proxy está correto bem como sua porta!

Se alguém puder ajudar, agradeço!