Foros del Web » Programación para mayores de 30 ;) » Java »

JamavaMail

Estas en el tema de JamavaMail en el foro de Java en Foros del Web. Buenas noches a todos bueno les comento soy nuevo en programacion java estoy desarollando una aplicacion para el lugar donde trabajo el tema es que ...
  #1 (permalink)  
Antiguo 10/04/2012, 19:04
 
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Pregunta JamavaMail

Buenas noches a todos bueno les comento soy nuevo en programacion java estoy desarollando una aplicacion para el lugar donde trabajo el tema es que esta app tienen que enviar un correo de notificacion a determinados usuarios listo esto lo e logrado pero al momento que el codigo lo pongo en mi app esta al momento de realizar en envio del correo se cuelga se inhibe en la parte del transport e intentado diferentes metodos sin tener buenos resultados me muestra en patalla los pasos que va realizando y se queda en la parte de comunicacion con servidor smtp port

Gracias por la ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 11/04/2012, 10:19
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Respuesta: JamavaMail

Hola mguerreroq,

A mi, mis compañeros, me llaman el spammer... porque casi cada semana tengo que mandar correos masivos (a listas de más de 100.000 usuarios). Así que si puedo ayudarte, estaré encantado.

Pero necesitaría más detalles.

Por lo que he entendido, es al llegar al transport no va.

¿podrías enviarnos un trozo de tu código?


Yo te cuento como lo hago yo. Primero instancio unas properties (donde configuro el host, el método de autentificación, el debug...) y con ellas genero una sesión con el servidor de correo que voy a utilizar (en este caso es una cuenta corporativa de la "empresa"). Aqui le paso las propiedades y autentifico con usuario y password.

Esa sesión luego se mete en un mimemultipart que es lo que finalmente irá como parámetro al passport (con el mensaje, el remitente, el asunto, el destinatario, etc...)


Pero sin ver más de tu código o del mensaje de error... no te puedo decir.
  #3 (permalink)  
Antiguo 12/04/2012, 02:12
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Información Respuesta: JamavaMail

Completando mi respuesta de ayer, y aprovechando que hoy estoy en mi equipo de "spam", te mando mi clase "Send":

Código:
/** datos lleva nombre y mail de cada destinatario, out = log que dejamos de los envíos 
*/
public static void send(DatosDireccion datos, BufferedWriter out) throws IOException {
   
	    try {
	
	    	Properties props = new Properties();
	    	props.put("mail.smtp.host", "/*servidor de correo*/");
	    	props.put("mail.smtp.auth", "true");
	    	props.put("mail.debug", "false");
	
	    	Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
	    		protected PasswordAuthentication getPasswordAuthentication() {
	    			return new PasswordAuthentication("/*usuario*/", "/*password*/");
	    		}
	    	});
	
	    	Message msg = new MimeMessage(session);
	    	msg.setFrom(
	    			new InternetAddress("/*mail remitente*/", "/*nombre remitente*/ "));
	    			
	    	try {
	    		msg.setRecipient(Message.RecipientType.TO, getAddress(datos.getMail()));
	    	} catch (UnsupportedEncodingException uee) {
	    		System.err.println("Recipient KO");
	    		uee.printStackTrace();	    		
	    	}
	    	
	    	msg.setSubject("/*asunto*/");
	    	
	    	BodyPart messageBodyPart = new MimeBodyPart();
	    	messageBodyPart.setContent("/*yo le paso el mensaje en html*/", "text/html");
	    	msg.setContent(multipart);
	    	
	    	// Prioridad al envío
	    	// 1 La más alta - 3 Normal - 5 la más baja
	    	msg.addHeader("X-Priority", "3");
	
	    	// Enviamos el mensaje
	    	Transport.send(msg);
	
	    	/*log*/
	    } catch (Exception ex) {
	    	/*log error*/
	    }
	}

Espero que te pueda orientar o servir de ayuda.
  #4 (permalink)  
Antiguo 12/04/2012, 08:59
 
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: JamavaMail

Que tal y gracias por responder este es el codigo que estoy utilizando
public static void sendmail() {


// Propiedades de la conexión
Properties props = new Properties();
props.setProperty("mail.smtp.host", "ip real del servidor");
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.user", "correo de origen");
props.setProperty("mail.smtp.auth", "true");
props.put("mail.debug", "true");

// Preparamos la sesion
Session session = Session.getInstance(props);


// Construimos el mensaje
MimeMessage ms = new MimeMessage(session);


try{
ms.setFrom(new InternetAddress("correo de origen"));
ms.addRecipient(
Message.RecipientType.TO, new InternetAddress("correo destino"));

ms.setSubject("Tema del correo");
ms.setText("cuerpo del correo");




}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Error: "+ e.getMessage());
}
// Lo enviamos.

Transport tr;
try{
tr=session.getTransport("smtp");
tr.connect("usuario","clave");
tr.sendMessage(ms, ms.getAllRecipients());
tr.close();

}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Error en envio: "+ e.getMessage());

}


}
  #5 (permalink)  
Antiguo 12/04/2012, 09:31
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Respuesta: JamavaMail

¿No hay log del error? Aunque sea un printstacttrace en la consola...


Prueba a cambiar este trozo de código

Cita:
Transport tr;
try{
tr=session.getTransport("smtp");
tr.connect("usuario","clave");
tr.sendMessage(ms, ms.getAllRecipients());
tr.close();

}
catch(Exception e){
JOptionPane.showMessageDialog(null,"Error en envio: "+ e.getMessage());

}
por esto:

Transport.send(ms);


Y lo pones en el otro try/catch... a ver si sale algo nuevo
  #6 (permalink)  
Antiguo 12/04/2012, 10:07
 
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: JamavaMail

que tal esto es lo que me vota en panatalla
DEBUG: JavaMail version 1.4.5
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Pro vider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport ,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provide r[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport ,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "IP de server correo", port 25, isSSL false

adicional remplace por lo que me dices pero me da error Expected '/', got null

Última edición por mguerreroq; 12/04/2012 a las 10:14
  #7 (permalink)  
Antiguo 13/04/2012, 04:42
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Respuesta: JamavaMail

Una pregunta... en esta instrucción:


ms.setText("cuerpo del correo");

¿es tal cual? ¿no tiene un segundo parámetro?

Fijate que yo la envío así:

BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("/*yo le paso el mensaje en html*/", "text/html");
msg.setContent(multipart);



Es decir, a parte de utilizar un messageBodyPart, que no se si es necesario o puedes prescindir de ello, busca si le estás configurando la codificación que quieres enviar el mensaje (html, string...)
  #8 (permalink)  
Antiguo 13/04/2012, 12:56
 
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: JamavaMail

si es tal no tiene un segundo parametro
ya no se que hacer e probado con el codigo que has pasado pero sigue la aplicacion se cuelga al momento de realizar el envio llega hasta
DEBUG SMTP: trying to connect to host "IP del servidor de correo", port 25, isSSL false
y no hace mas tengo que forsar el cierre de la aplicacion
  #9 (permalink)  
Antiguo 16/04/2012, 01:40
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Respuesta: JamavaMail

Pregunta capciosa:

¿estamos seguros de que los parámetros de conexión con el servidor de correo son correctos?
  #10 (permalink)  
Antiguo 16/04/2012, 08:52
 
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: JamavaMail

que tal gracias por ayudamarme con este temita te comento que estoy 100% seguro que es la configuracon del servidor ya que yo soy la persona que administra el servidor de correo y e realizado pruebas en con el mismo cdigo en una clsse completamente nueva y funciona envia los correos correctamente

Código:
package chuidiang.ejemplos.mail;

import java.util.Properties;
 
import javax.mail.Message;
import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 
public class ChuidiangEjemplosMail {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         try
         {
             // Propiedades de la conexión
             Properties props = new Properties();
             props.setProperty("mail.smtp.host", "192.168.5.2");
             //props.setProperty("mail.smtp.starttls.enable", "true");
             props.setProperty("mail.smtp.port", "25");
             props.setProperty("mail.smtp.user", "[email protected]");
             props.setProperty("mail.smtp.auth", "true");
             props.put("mail.debug", "true"); 
 
            // Preparamos la sesion
             Session session = Session.getDefaultInstance(props);
          //  Session.setDebug(true);
 
            // Construimos el mensaje
             MimeMessage message = new MimeMessage(session);
             message.setFrom(new InternetAddress("[email protected]"));
                 message.addRecipient(
                 Message.RecipientType.TO, new InternetAddress("[email protected]"));
                 //message.addRecipient(
                 //Message.RecipientType.CC, new InternetAddress("[email protected]"));
             message.setSubject("Sistema de Requerimietos");
             message.setText("Solicitud de requerimiento emitida por:");
 
            // Lo enviamos. 
             Transport t = session.getTransport("smtp");
             t.connect("sistemas", "clave");
             t.sendMessage(message, message.getAllRecipients());
 
            // Cierre.
            t.close();
            
         }
         catch (Exception e)
         {
            
             e.printStackTrace();
         }
 
        // TODO code application logic here
    }
}
con el codigo como esta funciona sola no se que puedo estar haciendo mal al momento de unir este codigo a mi aplicacion que hace que esta no responda
  #11 (permalink)  
Antiguo 16/04/2012, 12:21
 
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Respuesta: JamavaMail

que tal luego de dejar la aplicacion abierta por al rededor de media hora me dado esto y se cerro la aplicacion espero esto ayude a soluciona el problea

gracias por la ayuda

Código:
Prueba para enviar un mail...Mon Apr 16 12:34:18 COT 2012
DEBUG: JavaMail version 1.4.5
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
Enviando ...
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "200.93.229.150", port 25, isSSL false
Se ha producido una exception
Could not connect to SMTP host: 200.93.229.150, port: 25
javax.mail.MessagingException: Could not connect to SMTP host: 200.93.229.150, port: 25;
  nested exception is:
	java.net.SocketException: Connection reset
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at tiket.TiketApp.sendmail(TiketApp.java:340)
	at tiket.TiketView.btpruebacorreoActionPerformed(TiketView.java:689)
	at tiket.TiketView.access$1000(TiketView.java:31)
	at tiket.TiketView$6.actionPerformed(TiketView.java:318)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6263)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6028)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(SocketInputStream.java:168)
	at java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:88)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:429)
	at java.net.Socket.connect(Socket.java:529)
	at java.net.Socket.connect(Socket.java:478)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
	... 35 more
BUILD SUCCESSFUL (total time: 30 minutes 3 seconds)
  #12 (permalink)  
Antiguo 17/04/2012, 01:52
 
Fecha de Ingreso: abril-2012
Ubicación: Madrid
Mensajes: 28
Antigüedad: 12 años
Puntos: 3
Respuesta: JamavaMail

Si todo está como pones en los códigos de arriba, veo esto:

En el código que no funciona:

props.setProperty("mail.smtp.host", "ip real del servidor");
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "25");


En el código que si funciona:

props.setProperty("mail.smtp.host", "192.168.5.2");
//props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "25");


TLS es para la conexión segura, en gmail se configura con el puerto 587, pero tu vas al puerto 25... ¿has probado a comentar la misma linea en la aplicación?

Etiquetas: programa, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:31.