Сначала необходимо выполнить команду STARTTLS. mail.smtp.EnableSSL.enable уже имеет значение true

Я работаю над Java Spring, Maven и пытаюсь отправить письмо на gmail, используя идентификатор gmail. Я получаю эту ошибку:

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 11sm885884pfp.38 - gsmtp

даже через я установил параметр

mail.smtp.starttls.enable

к истине.

Это моя функция:

public String sendMail(String to, String subject, String textMessage) throws IOException {
    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.auth", "true");
    Session mailSession = Session.getInstance(props);
    mailSession.setDebug(true);
    Message simpleMessage = new MimeMessage(mailSession);

    InternetAddress fromAddress = [email protected];
    InternetAddress toAddress = null;
    try {
        toAddress = new InternetAddress(to);
    } catch (AddressException e) {
        System.out.print("\nError in Address of Sender or reciever\n");
        e.printStackTrace();
    }
    try {
        simpleMessage.setFrom(fromAddress);
        simpleMessage.setRecipient(RecipientType.TO, toAddress);
        simpleMessage.setSubject(subject);
        simpleMessage.setText(textMessage);
        SMTPTransport t = (SMTPTransport) mailSession.getTransport("smtp");
        t.setStartTLS(true);
        t.connect("smtp.gmail.com", "[email protected]", "from.password!");
        t.sendMessage(simpleMessage, simpleMessage.getAllRecipients());
        t.close();

    } catch (MessagingException e) {             
        System.out.print("\nError in message Genration\n");
        e.printStackTrace();
    }
    return "success";
}

Все ответы на SO говорят нам установить для mail.smtp.starttls.enable значение true. Сделать это даже не получается.

Я также включил зависимость javax.mail в свой pom как:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
</dependency>

person chandan    schedule 25.12.2015    source источник


Ответы (1)


Когда вы используете Spring, лучше использовать их абстракции вместо javax.mail низкоуровневого API. Фактически, вы можете использовать JavaMailSender и его реализацию JavaMailSenderImpl для достижения того же результата. См. это. для примера.

person Ali Dehghani    schedule 25.12.2015