2012-05-09 98 views
16

estoy corriendo este sencillo ejemplo con mi cuenta Gmail, pero no su trabajo y dar el siguiente error:debe emitir un comando STARTTLS primera

 send failed, exception: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. nv2sm4478384pbb.6  

Aquí está mi código

public class Email 
{ 
    public static void main(String [] args) 
    { 

     Properties props = new Properties(); 
     props.put("mail.smtp.host", "smtp.googlemail.com"); 
     props.put("mail.from", "[email protected]"); 
      Session session = Session.getInstance(props, null); 

     try { 
      MimeMessage msg = new MimeMessage(session); 
      msg.setFrom(); 
      msg.setRecipients(Message.RecipientType.TO, 
           "[email protected]"); 
      msg.setSubject("JavaMail hello world example"); 
      msg.setSentDate(new Date()); 
      msg.setText("Hello, world!\n"); 
      Transport.send(msg); 
     } catch (MessagingException mex) { 
      System.out.println("send failed, exception: " + mex); 
     } 
    } 
} 
+1

Primero debe emitir un comando STARTTLS. nv2sm4478384pbb.6 – user1226162

+3

Debe agregar la siguiente línea: props.put ("mail.smtp.starttls.enable", "true"); –

+0

Dupe de http://stackoverflow.com/questions/10509699/must-issue-a-starttls-command-first –

Respuesta

24

Estás probablemente intente utilizar los servidores de Gmail en el puerto 25 para entregar correos a un tercero a través de una conexión no autenticada. Gmail no le permite hacer esto, porque luego cualquiera podría usar los servidores de Gmail para enviar correos a cualquier otra persona. Esto se llama retransmisión abierta y fue un habilitador común de correo no deseado en los primeros días. Los relés abiertos ya no son aceptables en Internet.

Deberá solicitarle a su cliente SMTP que se conecte a Gmail mediante una conexión autenticada, probablemente en port 587.

+0

¿Hay algún proveedor de correo electrónico que pueda aceptar una conexión no autenticada, esos días? – Error

+0

Ahora, para acceder al correo de Any Java Client, es posible que deba reducir la seguridad. Lea https://support.google.com/accounts/answer/6010255 – Ashu

-1
String username = "[email protected]"; 
    String password = "some-password"; 
    String recipient = "[email protected]"); 

    Properties props = new Properties(); 

    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.from", "[email protected]"); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.port", "587"); 
    props.setProperty("mail.debug", "true"); 

    Session session = Session.getInstance(props, null); 
    MimeMessage msg = new MimeMessage(session); 

    msg.setRecipients(Message.RecipientType.TO, recipient); 
    msg.setSubject("JavaMail hello world example"); 
    msg.setSentDate(new Date()); 
    msg.setText("Hello, world!\n"); 

    Transport transport = session.getTransport("smtp"); 

    transport.connect(username, password); 
    transport.sendMessage(msg, msg.getAllRecipients()); 
    transport.close(); 
+0

. Describa su código. –

9

puerto SMTP y socketFactory tiene que haber un cambio

String to = "[email protected]"; 
    String subject = "subject" 
    String msg ="email text...." 
    final String from ="[email protected]" 
    final String password ="senderPassword" 


    Properties props = new Properties(); 
    props.setProperty("mail.transport.protocol", "smtp");  
    props.setProperty("mail.host", "smtp.gmail.com"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "465"); 
    props.put("mail.debug", "true"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 
    Session session = Session.getDefaultInstance(props, 
    new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(from,password); 
    } 
    }); 

    //session.setDebug(true); 
    Transport transport = session.getTransport(); 
    InternetAddress addressFrom = new InternetAddress(from); 

    MimeMessage message = new MimeMessage(session); 
    message.setSender(addressFrom); 
    message.setSubject(subject); 
    message.setContent(msg, "text/plain"); 
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 

    transport.connect(); 
    Transport.send(message); 
    transport.close(); 
    } 

esperanza de que va a trabajar para usted ..

+0

Este message.setSender (addressFrom); debería ser message.setFrom (addressFrom); –

+0

Gracias funcionó –

+0

podemos enviar a correos a webamails usando esto –

1

Adición

props.put("mail.smtp.starttls.enable", "true"); 

resuelto mi problema;)

Mi problema era:

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 debe emitir un comando STARTTLS primero. u186sm7971862pfu.82 - gsmtp

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108) 
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609) 
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117) 
at javax.mail.Transport.send0(Transport.java:195) 
at javax.mail.Transport.send(Transport.java:124) 
at com.example.sendmail.SendEmailExample2.main(SendEmailExample2.java:53) 
Cuestiones relacionadas