В чем причина остановки программы после вызова метода?

Рейтинг: -2Ответов: 1Опубликовано: 28.03.2023

Подскажите, пожалуйста, в чем может быть причина остановки программы, при вызове этого метода:

public class Controller {

 if (name_field.getText().trim().length() != 0) {

                                        
 if (email_field.getText().matches("^[A-Za-z0-9+_.-]+@(.+)$")) {

                                            
    System.out.println("\n Добавлено в 
    базу");

    emailSender();

   }

}
                                            
private void emailSender() {

        String to = email_field.getText();

        // Необходимо указать адрес электронной почты отправителя
        String from = "";

        // Предполагая, что вы отправляете электронное письмо с yandex
        String host = "smtp.yandex.ru";

        String port = "465";

        // Получить свойства системы
        Properties properties = System.getProperties();

        // Настроить почтовый сервер
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.starttls.enable", "true");

        properties.setProperty("mail.user", from);
        properties.setProperty("mail.password", "");

        // Получение объекта Session по умолчанию
        Session session = Session.getDefaultInstance(properties);

        try {
            // Создание объекта MimeMessage по умолчанию
            MimeMessage message = new MimeMessage(session);

            // Установить От: поле заголовка
            message.setFrom(new InternetAddress(from));

            // Установить Кому: поле заголовка
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            // Установить тему: поле заголовка
            message.setSubject("Это тема письма!");

            // Теперь установите фактическое сообщение
            message.setText("Это актуальное сообщение");

            // Отправить сообщение
            Transport.send(message);
            System.out.println("Сообщение успешно отправлено....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

Ответы

▲ 0Принят

Этот метод ждёт получение сообщения от метода

Transport.send(message);

Но сервер возможно неотвечает, или сообщение блокируется файерволом. Это блокирует текущий поток. Если хотите чтобы текущий поток продолжал работать то запускайте метод асинхронно.