Java 发送电子邮件异常错误消息

Java 发送电子邮件异常错误消息,java,email,jsp,servlets,Java,Email,Jsp,Servlets,我的servlet中有以下doPost,它将一条记录插入postgres数据库,然后向用户发送一封关于购买的电子邮件。我测试了插件,它工作得很好,但是当我尝试为发送电子邮件添加代码时,出现了一个异常错误,我不明白为什么 我甚至在一个标准的java应用程序中测试了send email函数,效果很好。这是我的密码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Servlet

我的servlet中有以下
doPost
,它将一条记录插入postgres数据库,然后向用户发送一封关于购买的电子邮件。我测试了插件,它工作得很好,但是当我尝试为发送电子邮件添加代码时,出现了一个异常错误,我不明白为什么

我甚至在一个标准的java应用程序中测试了send email函数,效果很好。这是我的密码

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 = "brice2nic3@gmail.com";

              // Sender's email ID needs to be mentioned
              String from = "brice2nic3@gmail.com";

              // 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)

任何帮助都将不胜感激。

NoClassDefFoundError的原因是类路径中没有特定的类。第三方API
mail.jar
应该位于WEB应用程序的
/WEB-INF/lib


您可能正在使用jar命令运行您的程序,而类未在清单文件的ClassPath属性中定义

为什么不将smtp用户名、密码和端口号设置为系统属性?javax.mail应该出现在j2ee.jar中,因为他正在使用基于servlet的应用程序,服务器上应该存在j2ee.jar…问题出在thnks mate:)