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

Enviar correo

Estas en el tema de Enviar correo en el foro de Java en Foros del Web. Hola! Quiero enviar un correo electrónico desde mi aplicación java y me da este error: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 28sm2956614eye.7 ...
  #1 (permalink)  
Antiguo 10/07/2009, 09:51
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
Enviar correo

Hola!

Quiero enviar un correo electrónico desde mi aplicación java y me da este error:

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 28sm2956614eye.7

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(S MTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTrans port.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTr ansport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)

Y no se lo que estoy haciendo mal. Gracias por vuestra ayuda. Un saludo.
  #2 (permalink)  
Antiguo 11/07/2009, 00:11
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Enviar correo

Que estas usando para enviar mails? Y que mail server tenes instalado?
  #3 (permalink)  
Antiguo 11/07/2009, 03:23
 
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar correo

Hola!

Mi código es:

Código HTML:
String asunto= "Apuestas Web ::: Envio Contraseña";
 String textoCabecera="<div>&nbsp;&nbsp;&nbsp; Sistema de Información de apuestas web</div>";
String subrayado=    "<div>----------------------------------------------------------------</div>";
String espacio="<div>&nbsp;</div>";
String host = "smtp.gmail.com";
String from = usuario.getEmail();//
String saludo = "";
 String textoIntroductorio = "";
String contrasena = "";
//Email del administrador
String to = "[email protected]";

try{

	 //DATOS DEL CORREO DE REGISTRO
	saludo = "<div>"+saludo + usuario.getApellidos()+ ",</div>"; 
	textoIntroductorio = "<div> Le enviamos la contraseña solicitada para poder acceder";
	contrasena = "<div>Contraseña:" + usuario.getPassword() + "<div>";
	 //to = usuario.getEmail();

	String pd="<div>Por favor, no conteste a este mensaje.</div>" +
	"<div>Es generado automáticamente.</div>" +
	"<div>Gracias.</div>";


	//Get system properties
	Properties props = System.getProperties();
	//Setup mail server
	props.put("mail.smtp.host", host);
	props.setProperty("mail.smtp.port","587");

	Session session1 = Session.getDefaultInstance(props, null);

	//Defino el mensaje
	MimeMessage message = new MimeMessage(session1);
	message.setFrom(new InternetAddress(from));
	message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
	message.setSubject(asunto);

	//1ª PARTE --> TEXTO DEL MENSAJE
	String cuerpo = textoCabecera+subrayado+espacio+saludo+espacio+textoIntroductorio+espacio+contrasena+espacio+pd;

	BodyPart messageBodyPart = new MimeBodyPart();
	messageBodyPart.setContent("<font face=\"Courier\" size=\"1\">"+cuerpo+"</font>","text/html");	            
	 Multipart multipart = new MimeMultipart();
	multipart.addBodyPart(messageBodyPart);

	message.setContent(multipart);

	//Send message
	Transport.send(message);

}catch (Exception e) {
	String error="Error de al enviar un mensaje de correo electronico. ";
	 LOG.error(error+e.toString());
}

Gracias
  #4 (permalink)  
Antiguo 11/07/2009, 12:08
Avatar de ezefarina  
Fecha de Ingreso: junio-2009
Mensajes: 91
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Enviar correo

Hola... Mirá, voy por partes:
1- No se puede usar el smtp de gmail así como así.
2- Lo que vos necesitas es tener un MailServer TUYO, o bien, que uses el MailServer del hosting que uses.
3- Ningún SMTP de ninguna empresa te va a permitir enviar mails desde cualquier casilla, si esas casillas no te pertenecen y no tenés la información de autenticación correspondiente. Por lo que por ejemplo no podrías mandar un mail de un usuario tuyo a otro usuario tuyo, sino de TU mail o el de tu empresa, a un usuario.

Yo pasé por el mismo problema un buen tiempo, MESES!!!. Y tras bastante investigación llegué a instalar mi propio MailServer. El que yo uso me solucionó todos los problemas y es MUY bueno. Se llama Mercury Mail Server, y acá tenes un tutorial junto con los links de descarga de la aplicación. Te explican como instalarlo, y como usarlo tanto en intranets como en internet... Si tenes dudas mandame un mail a [email protected]

Y lo que harías ahora con este mailServer, es cambiar el host a localhost o a la ip del equipo en que corras el server. Ej.:
Código :
Ver original
  1. private static final String SMTP_HOST_NAME = "localhost";
  2.     private static final Integer SMTP_PORT = 25;
  3.  
  4.     public static void main(String args[]) throws Exception {
  5.         try {
  6.             sendMail("[email protected]", "[email protected]", "ASUNTO", "MSG");
  7.         } catch (MailException e) {
  8.         }
  9.     }
  10.    
  11.     public static void sendMail(String from, String recipient, String subject, String message) {
  12.         Properties props = new Properties();
  13.         props.put("mail.smtp.host", SMTP_HOST_NAME);
  14.         props.put("mail.smtp.auth", "true");
  15.         props.put("mail.smtp.port", SMTP_PORT);
  16.         Authenticator auth = new SMTPAuthenticator();
  17.         Session session = Session.getDefaultInstance(props, auth);
  18.         Message msg = new MimeMessage(session);
  19.         try {
  20.             InternetAddress addressFrom = new InternetAddress(from);
  21.             msg.setFrom(addressFrom);
  22.             InternetAddress addressTo = new InternetAddress(recipient);
  23.             msg.setRecipient(Message.RecipientType.TO, addressTo);
  24.             msg.setSubject(subject);
  25.             msg.setContent(message, "text/plain");
  26.             Transport.send(msg);
  27.         } catch (MessagingException me) {
  28.             logger.error("Se produjo un error al enviar Mail from<"+from+"> to<"+recipient+">",me);
  29.             throw new MailException(me);
  30.         }
  31.     }
  32.  
  33.     public static void secureSendMail(String from, String recipient, String subject, String message) {
  34.         Properties props = new Properties();
  35.         props.put("mail.smtp.host", SMTP_HOST_NAME);
  36.         props.put("mail.smtp.auth", "true");
  37.         props.put("mail.smtp.port", SMTP_PORT);
  38.         Authenticator auth = new SMTPAuthenticator();
  39.         Session session = Session.getDefaultInstance(props, auth);
  40.         Message msg = new MimeMessage(session);
  41.         try {
  42.             InternetAddress addressFrom = new InternetAddress(from);
  43.             msg.setFrom(addressFrom);
  44.             InternetAddress addressTo = new InternetAddress(recipient);
  45.             msg.setRecipient(Message.RecipientType.TO, addressTo);
  46.             msg.setSubject(subject);
  47.             msg.setContent(message, "text/plain");
  48.             Transport.send(msg);
  49.         } catch (MessagingException me) {
  50.             logger.error("Se produjo un error al enviar Mail from<"+from+"> to<"+recipient+">",me);
  51.         }
  52.     }



Y otro tema no menos importante.. Para usar cualquier mailServer en internet, vas a tener que contar con IP Fija, o bien la que te dan en un hosting, dado que como medida de seguridad anti spam, TODOS los smtp de las empresas, bloquean la recepción de mails desde IPs dinámicas.

Slds!
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 07:03.