TLS problème lors de l'envoi à gmail via JavaMail

S'avère que JavaMail est un peu plus frustrant que j'ai pensé qu'il serait. J'ai regardé plusieurs exemples en ligne sur la façon d'envoyer un simple e-mail SMTP par les serveurs Gmail (mais pas via le protocole SSL). Après avoir essayé plusieurs exemples de code, j'ai garder de conclure le même exemple d'exception quand je l'appelle transport.connect(). Je reçois cette trace de la pile:

Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. l10sm302158wfk.21
     at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
     at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
     at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
     at SendEmail.main(SendEmail.java:47)

Quelqu'un peut-il me dire ce que je doit ajouter ou faire pour résoudre ce problème?

Voici mon code:

    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.host", "smtp.gmail.com");
    props.put("mail.user", "[email protected]");
    props.put("mail.password", "blah");
    props.put("mail.port", "587");

    Session mailSession = Session.getDefaultInstance(props, null);
    Transport transport = mailSession.getTransport();

    MimeMessage message = new MimeMessage(mailSession);
    message.setSubject("This is a test");
    message.setContent("This is a test", "text/plain");
    message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));

    transport.connect();
    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    transport.close();

OriginalL'auteur Brian | 2011-06-28