2013-05-01 3 views
0

привет, у меня есть класс sendemail, у которого есть метод sendmail.i есть еще одна активация страницы jsp и на странице активации jsp. Я вызываю метод sendmail, чтобы отправить электронное письмо в частности человек. для целей тестирования я создал метод почты в классе SendEmail, и она работала без ошибок, но когда я использовать его в JSP, то это показывает error.please помочь мнеошибка при попытке отправить электронное письмо с использованием класса java

sendemail.java

package mail; 
import java.util.Properties; 

import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 


public class SendEmail { 
    public void sendmail(String Email) 
    { 
     final String username = "from"; 
     final String password = "x"; 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.port", "587"); 

     Session session = Session.getInstance(props, 
      new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
      }); 

     try { 

      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("from")); 
      message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse(Email)); 
      message.setSubject("Activatiozdfdfgen"); 
      message.setText("Dear user ," 
       + "\n\n your username is xxx and pasword is yyy"); 

      Transport.send(message); 

      System.out.println("Done"); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    } 
    public static void main(String s[]) 
    { 
     SendEmail se=new SendEmail(); 
     se.sendmail("to"); 
    } 
    } 

это активация .jsp

<%@ page import="java.sql.*" %><%@ page import="DB.*" %> 
<%@ page import="mail.*" %> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
<%!Connection con=null; 
int uid;%> 
<%DataBaseConnection db= new DataBaseConnection(); 
con=db.connet(); 
uid=Integer.parseInt(request.getParameter("hidden")); 

    try{ 
    PreparedStatement pt=con.prepareStatement("update registration set status='activated' where UID="+uid); 
    pt.executeUpdate(); 
    SendEmail se=new SendEmail(); 
    se.sendmail(request.getParameter("email")); 

    } 

catch(Exception e){out.println(e);} %> 


    <script type="text/javascript"> 
    alert("activated"); 

    </script> 
    <jsp:forward page="Admin.jsp"></jsp:forward> 

</body> 
</html> 

это ошибка

type Exception report 

message An exception occurred processing JSP page /Activate.jsp at line 21 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /Activate.jsp at line 21 

18:  try{ 
19:  PreparedStatement pt=con.prepareStatement("update registration set status='activated' where UID="+uid); 
20:  pt.executeUpdate(); 
21:  SendEmail se=new SendEmail(); 
22:  se.sendmail(request.getParameter("email")); 
23:  
24:  } 


Stacktrace: 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root cause 

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/mail/MessagingException 
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912) 
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841) 
    org.apache.jsp.Activate_jsp._jspService(Activate_jsp.java:112) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root cause 

java.lang.NoClassDefFoundError: javax/mail/MessagingException 
    org.apache.jsp.Activate_jsp._jspService(Activate_jsp.java:85) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root cause 

java.lang.ClassNotFoundException: javax.mail.MessagingException 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558) 
    org.apache.jsp.Activate_jsp._jspService(Activate_jsp.java:85) 
    org.apache.jasper.runtime.HttpJ 
+0

Похоже, что вам не хватает jar ... – iluxa

+0

Пока ваш метод 'main()' не найден, приложение запускается. Только позже, когда он пытается загрузить «MessagingException» в первый раз, он обнаруживает, что для этого нет бана для – iluxa

+0

@iluxa извините за мой предыдущий комментарий. теперь это сработало – 2013-05-01 08:29:34

ответ

1

причина заключается в том, что MessagingException не в пути к классам вашего веб-сервера:

java.lang.NoClassDefFoundError: javax/mail/MessagingException 

Вы должны добавить банку, содержащую этот класс для пути к классам веб-сервера. Найдите в Интернете, чтобы найти банку, которая вам подходит (возможно, mail.jar). Вы также можете проверить это SO question.

+0

да, вы правы, я пропустил mail.jar, и когда я положил его в tomcat/lib, тогда он сработал. – 2013-05-01 08:29:04

Смежные вопросы