Nano Hash - криптовалюты, майнинг, программирование

Отправить сообщение об ошибке исключения по электронной почте

У меня есть следующий doPost в моем сервлете, который вставляет запись в базу данных postgres, а затем отправляет пользователю электронное письмо о покупке. Я протестировал вставку, и она отлично работает, но когда я пытаюсь добавить код для отправки электронной почты, возникает ошибка исключения, и я не понимаю, почему.

Я даже протестировал функцию отправки электронной почты в стандартном одиноком java-приложении, и она отлично работает. Вот мой код

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Start");
        HttpSession s = request.getSession(true);
        String firstName = (String) s.getAttribute("firstName");
        String lastName = (String) s.getAttribute("lastName");
        String email = (String) s.getAttribute("email");
        String creditCard = (String) s.getAttribute("cCard");

        if (s.getAttribute("bookingCart") != null) {
            System.out.println(firstName);
            if(firstName == null || lastName == null || email == null || creditCard == null) {
                response.sendRedirect("MasterController?confirmBooking=true&error=Data+not+valid");
                return;
            }
            bookingDTO booking = (bookingDTO) s.getAttribute("bookingCart");
            bookingsDAO bookingsDAO = new JDBCBookingsDAO();
            bookingsDAO.confirmPaymentBooking(booking.getId() , email, firstName, lastName, creditCard);
            System.out.println("Booking updated");
            String msg = "Dear Customer,\n Thnk you for Using Our website \n Please use link below to confirm your Booking\n"+
                         " ";
             // Recipient's email ID needs to be mentioned.
              String to = "[email protected]";

              // Sender's email ID needs to be mentioned
              String from = "[email protected]";

              // Assuming you are sending email from localhost
              String host = "smtp";

              System.out.println("Proterpies");
              // Get system properties
              Properties properties = System.getProperties();
              System.out.println("Booking updated1");
              // Setup mail server
              properties.setProperty("mail.smtp.host", host);
              System.out.println("Booking updated2");
              // Get the default Session object.
              Session session = Session.getDefaultInstance(properties);
              System.out.println("Booking updated3");
              try{
                  System.out.println("Booking updated4");
                 // Create a default MimeMessage object.
                 MimeMessage message = new MimeMessage(session);
                 System.out.println("Booking updated5");
                 // Set From: header field of the header.
                 message.setFrom(new InternetAddress(from));
                 System.out.println("Booking updated6");
                 // Set To: header field of the header.
                 message.addRecipient(Message.RecipientType.TO,
                                          new InternetAddress(to));
                 System.out.println("Booking updated7");
                 // Set Subject: header field
                 message.setSubject("This is the Subject Line!");
                 System.out.println("Booking updated8");
                 // Now set the actual message
                 message.setText("This is actual message");
                 System.out.println("Booking updated9");
                 // Send message
                 Transport.send(message);
                 System.out.println("Sent message successfully....");
              }catch (MessagingException mex) {
                 mex.printStackTrace();
              }
            s.removeAttribute("bookingCart");
            s.setAttribute("bookingCart", null);
            s.removeAttribute("bookingAmount");
            s.setAttribute("bookingAmount", null);
        } else {
            System.out.println("Booking not updated");
            response.sendRedirect("MasterController?retHome=true");
            return;
        }
        System.out.println("redirected to masterController");
        response.sendRedirect("MasterController?Message=Booking+Successful");
    }

и мое сообщение об исключении:

java.lang.NoClassDefFoundError: javax/mail/MessagingException
    java.lang.Class.getDeclaredConstructors0(Native Method)

Любая помощь приветствуется.

10.05.2012

  • Почему вы не устанавливаете имя пользователя, пароль и номер порта smtp в свойствах системы? 10.05.2012

Ответы:


1

Причина NoClassDefFoundError заключается в том, что определенный класс недоступен в пути к классам. Сторонний API mail.jar должен находиться под /WEB-INF/lib в вашем веб-приложении.

Возможно, вы запускаете свою программу с помощью команды jar, а класс не был определен в атрибуте ClassPath файла манифеста.

10.05.2012
  • javax.mail должен присутствовать в j2ee.jar, так как он работает над приложением на основе сервлета, j2ee.jar должен присутствовать на сервере... 10.05.2012
  • спасибо приятель, это была проблема :) 10.05.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..