Java - JavaMail - SendMessage

 
Vista:
Imágen de perfil de Giovanni

JavaMail - SendMessage

Publicado por Giovanni (2 intervenciones) el 04/09/2013 00:14:06
Estimados Javeros y amigos todos,
Tengo una consulta, recién me inicio en el mundo java y tengo un tema que no encuentro como resolverlo. Estoy haciendo una pequeño aplicación para enviar correos diferentes a unas 50000 direcciones, he probado con 10 direcciones y se demora aprox. 1 minuto con 23 segundos, es demasiado, he notado que justo en la parte sendMessage es donde demora, espero me puedan dar un tip de como acelerar este proceso y así no me despidan!! :D..

Transport trp = session.getTransport("smtp");
trp.connect(pr.getProperty("mail.host"), pr.getProperty("mail.user"), pr.getProperty("mail.password"));
trp.sendMessage(lmm_message, lmm_message.getAllRecipients());
trp.close();

Este código lo tengo dentro de un while, que según recupera las direcciones de correo de la BD los va enviando.

He probado poniendo un hilo, pero igual lo encola y termina mandando uno por uno...
Amigos, espero me puedan ayudar..
Gracias de antemano.
GRC
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

JavaMail - SendMessage

Publicado por UnoPorAhi (128 intervenciones) el 04/09/2013 17:18:34
Buenas,

Me da que el problema no esta en el codigo, sino en el servidor SMTP que teneis o bien la comunicacion de red con este, que deben ser una patata...
Supongo que habra que despedir al de sistemas.


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Giovanni

JavaMail - SendMessage

Publicado por Giovanni (2 intervenciones) el 06/09/2013 05:49:39
Estimado,
He notado que el problema es xq estoy adjuntando un archivo pdf de aprox. 40 KB, cuando lo hago con texto simple es unos 2 segundos x correo, pero igual me parece que es demasiado casi 9 segundos x un email con un adjunto.. Esta la configuración que uso para del SMTP

mail.transport.protocol=smtp
mail.host=smtp.gmail.com
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
mail.smtp.quitwait=false
mail.smtp.auth=true
mail.smtp.port=465
mail.smtp.userset=true
mail.smtp.noop.strict=false

Habra alguna forma de comprimir el adjunto para que pueda ser más rápido el envio.. o alguna configuración que le diga al código que envie y al toke suelte la conexión y pase al siguiente... xq no quiero esperar respuesta si llego bien o no.. Help me!!..

Gracias por tu aporte..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JavaMail - SendMessage

Publicado por UnoPorAhi (128 intervenciones) el 06/09/2013 11:39:00
Se te olvido nombrar el pequenio detalle del adjunto no?

Tienes que enviar por red +o- unos 50kb desde la maquina java al servidor SMTP y este a su vez enviar el correo a traves de internet. Eso lleva tiempo.

Desde Java lo unico que podrias hacer es comprimir previamente el pdf. Con eso a lo mejor reduces el tiempo a 5s por mail, por lo que en unas 14 hora habrias enviado los 10000.
Aunque desincronizes el envio no por eso se van a enviar antes los correos. Seguramente lo unico que conseguiras sera petar la JVM, la red y el servidor SMTP.

Desde la parte java no se puede hacer mas a que los mails hay que enviarlos completos y de uno en uno. Si se quiere que el proceso sea mas rapido habria que preparar un script en la misma maquina del servidor SMTP que envie en batch el mensaje a todas las direcciones.


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar