Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > problema de envio con javamail

Hola a todos,

tengo un pequeño programa en java hecho en netbeans, que deberia enviar un correo simple pero no lo hace, como le tengo puesto el debug, esto me da:

INFO: DEBUG: setDebug: JavaMail version 1.4.3
INFO: DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
INFO: DEBUG SMTP: useEhlo true, useAuth true
INFO: DEBUG SMTP: trying to connect to host "mail.gmail.com", port 587, isSSL false
INFO: Unknown SMTP host: mail.gmail.com Mensaje no enviado

Mi codigo es el sgte:

private boolean enviar() throws MessagingException {
boolean v = false;
try
{
Properties props = new Properties();
props.setProperty("mail.smtp.host", "mail.gmail.com");
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.user", "micorreo@gmail.com");
props.setProperty("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(micorreo@gmail.com));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(destino@xyz.com));

message.setSubject("Confirmacion de correo");
message.setText("hola, funciona");
Transport t = session.getTransport("smtp");
t.connect("micorreo@gmail.com","micontraseña");
t.sendMessage(message,message.getAllRecipients());
t.close();
System.out.println(" Email enviado! ");
v = true;
}
catch (Exception e)
{
System.out.println(e.getMessage() + " Mensaje no enviado");
v = false;
}
return v;
}

marzo 26, 2012 | Unregistered CommenterDavid

Creo que tienes mal puesto el servidor SMTP de gmail. Creo que es smtp.googlemail.com y el puerto es 465 para SSL, creo que se puede usar el puerto 587 TLS.

marzo 27, 2012 | Registered Commenterrobertiano

Hola, gracias por responder ya lo resolvi es que tenia mal esta linea:

props.setProperty("mail.smtp.host", "mail.gmail.com");

era "smtp.gmail.com", ahi ya envio sin problemas. Graicas de todas formas :)

marzo 27, 2012 | Unregistered CommenterDavid

Hola amigos, tengo un problema con la recepción de mails con gmail y java...
Estoy utilizando este codigo:

import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.swing.JOptionPane;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author favacard
*/
public class RecibirMail
{
String usuario_google="recepcion.digital";
String password_google="recfic00";
Message[] mensajes=new Message[0];
Folder folder_raiz = null;
Folder folder=null;

public RecibirMail()
{
Properties prop = new Properties();
prop.setProperty("mail.pop3.starttls.enable", "false");
prop.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.pop3.socketFactory.fallback", "false");
prop.setProperty("mail.pop3.port", "110");
prop.setProperty("mail.pop3.socketFactory.port", "110");
Session sesion = Session.getInstance(prop);
try
{
Store store = sesion.getStore("pop3");
store.connect("pop.gmail.com", usuario_google+"@gmail.com", password_google);
folder_raiz = store.getDefaultFolder();
folder=folder_raiz.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
mensajes =folder.getMessages();
JOptionPane.showMessageDialog(null,"Mensajes Encontrados "+mensajes.length);
for (int i = 0; i < mensajes.length; i++)
{
String msg[]=new String[3];
msg[0]=mensajes[i].getFrom()[0].toString();
msg[1]=mensajes[i].getSubject();
msg[2]=mensajes[i].getSentDate()+"";
System.out.println("Para: "+msg[0]);
System.out.println("Asunto: "+msg[1]);
System.out.println("Fecha: "+msg[2]);

System.out.println("CONTENIDO:\n"+analizar_Correo(mensajes[i],""));

System.out.println("Adjunto: "+mensajes[i].ATTACHMENT.toString());
System.out.println("No se: "+mensajes[i].INLINE);
System.out.println("=====================================================================");
}
folder.close(false);
store.close();
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"No Conecto\nVerifique Su Conexion a Internet");
e.printStackTrace();
}
}

public String analizar_Correo(Part unaParte,String area)
{
try
{
if (unaParte.isMimeType("multipart/*"))
{
Multipart multi;
multi = (Multipart) unaParte.getContent();

if(multi!=null)
{
BodyPart par=null;
int pas=-1;
try
{
pas=multi.getCount();
}catch(Exception w)
{
System.out.println("Error ");
}

if(pas==0)
{
}
else
{
for (int j = 0; j < pas; j++)
{
par= multi.getBodyPart(j);
}
area=analizar_Correo(par,area);
}
}
}
else
{
if(unaParte.isMimeType("text/*"))
{
/*System.out.println("Texto " + unaParte.getContentType());
System.out.println(unaParte.getContent());
System.out.println("---------------------------------");*/

area+="\nTexto " + unaParte.getContentType();
try
{
area+="\n"+unaParte.getContent();
}catch(Exception ew)
{
System.out.print("Error ");
}

area+="\n"+"---------------------------------";
}
else
{
if (unaParte.isMimeType("image/*"))
{
/* System.out.println("Imagen " + unaParte.getContentType());
System.out.println("Fichero=" + unaParte.getFileName());
System.out.println("---------------------------------");*/
area+="\n"+"Imagen " + unaParte.getContentType();
area+="\n"+"Fichero=" + unaParte.getFileName();
area+="\n---------------------------------";

}
else
{
//System.out.println("Recibido " + unaParte.getContentType());
area+="\n"+"Recibido " + unaParte.getContentType();
area+="\n---------------------------------";
//System.out.println("---------------------------------");
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
return area;
}

public static void main(String args[])
{
new RecibirMail();
}
}


No puedo utilizar el puerto 995 por la configuración de nuestro servidor, por lo tanto usamos el 110.
El tema es que luego de ejecutar el código, luego de un rato, lanza la excepción javax.mail.MessagingException.

El error completo es este:

javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.SocketException: Connection reset
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at RecibirMail.(RecibirMail.java:40)
at RecibirMail.main(RecibirMail.java:156)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:189)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:312)
at sun.security.ssl.InputRecord.read(InputRecord.java:350)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:548)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:352)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:207)
at com.sun.mail.pop3.Protocol.(Protocol.java:111)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:261)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:206)
... 4 more
GENERACIÓN CORRECTA (total time: 8 minutes 6 seconds)


El codigo que estoy utilizando es el mismo que uds postearon con la unica diferencia que en estas 2 lineas modifico el puerto del host del 995 por el 110:

..."

prop.setProperty("mail.pop3.port", "110");
prop.setProperty("mail.pop3.socketFactory.port", "110");

"...

Ya e probado varios códigos y no hay caso no puedo recuperar los mails, si me pueden ayudar con mi problema les agradecería machismo.
Saludos para todos.

diciembre 22, 2012 | Unregistered CommenterEze

Esta parte de código es genial

if(pas==0)
{
} else {
...................

diciembre 26, 2012 | Unregistered Commenterfileal_v

Genial es ver una persona con tanto tiempo libre como para escribir burlas, a una persona que pide ayuda mientras trabaja...

diciembre 26, 2012 | Unregistered CommenterEze

Eze, te aseguro que no es una burla ni mucho menos pero es que yo creo que no basta con hacer que un código funcione. Si pudiera no dudes que te ayudaría pero lo intentaré cuando llegue a casa, ahora me es imposible.

Por otro lado, si es que te has sentido ofendido por mi comentario te pido disculpas.

diciembre 26, 2012 | Unregistered Commenterfileal_v

Que tal Eze tengo el mismo problema que tu, has podido resolver el problema para recuperar los mails con gmail???...

julio 24, 2014 | Unregistered Commenterarrf