个位高手好 我有个关于tomcat+servlet邮箱方面的问题 请高手帮助
我用的是tomcate+servlet写的邮箱,现在运行之后tomcat报500错误,不知该怎么解决,下面分别是我写的代码和抱错的代码 ,请高手发表看法,谢谢
--这是servlet邮箱的代码
package com;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class GetPass extends HttpServlet
{
public void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException
{
doPost(req,res);
}
public void doPost(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException
{
System.out.print("aaa");
req.setCharacterEncoding("gbk");
res.setContentType("text/html;charset=gbk");
PrintWriter out=res.getWriter();
HttpSession session=req.getSession();
String name=(String)session.getAttribute("name");
String pass=(String)session.getAttribute("pass");
String email=(String)session.getAttribute("email");
try
{
//使用Properties props=System.getProperties();亦可
Properties props=new Properties();
//设置smtp协议,如不在此处设定,可以在mailSession.getTransport("smtp");中指出
props.put("mail.transport.protocol","smtp");
//设置smtp主机
props.put("mail.smtp.host","smtp.sina.com");
//使用身份验证
props.put("mail.smtp.auth","true");
//指出smtp的使用的端口号,默认的端口就是25
props.put("mail.smtp.port","25");
//得到Session对象#琒ession是抽象类,要用工厂的方法得到其实例
Session mailSession=Session.getInstance(props);
//显示不显示调试信息
//mailSession.setDebug(true);
//得到Message对象,Message是MimeMessage的基类,
//写成MimeMessage msg=new MimeMessage(mailSession);亦可
Message msg=new MimeMessage(mailSession);
//设定邮件的form,to,cc,Bcc,subject,content等属性
//如果要发给多个人或抄送密抄对个人用msg.setRecipients(msg,Address[]),使用一个InternetAddress的数组
msg.setFrom(new InternetAddress("caojinhui123456777@sina.com"));
msg.setRecipient(Message.RecipientType.TO,new InternetAddress(email));
msg.setSubject(name);
msg.setText("您的密码是:"+pass);
msg.setSentDate(new Date());
//得到Transport对象,要用工厂的方法得到
Transport trans=mailSession.getTransport();
//以smtp方式登录邮箱 ,不登陆对于不是本地的smtp服务器不能发送Mail
trans.connect("smtp.sina.com","caojinhui123456777@sina.com","2733899");
//发送邮件,直接使用Send方法不保险
//第一个参数是信,第二个参数是所有收件人,包含CC和BCC的
trans.sendMessage(msg,msg.getAllRecipients());
out.println("信件已经发出");
out.close();
//msg.writeTo(System.out);
}
catch(Exception e)
{
System.out.println( e.getMessage() );
}
}
public void init(ServletConfig cfg) throws ServletException
{
super.init(cfg);
}
public void destroy()
{
super.destroy();
}
}
--这是报错代码
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class com.GetPass
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:595)
root cause
java.lang.NoClassDefFoundError: javax/mail/Message
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
java.lang.Class.getConstructor0(Class.java:2640)
java.lang.Class.newInstance0(Class.java:321)
java.lang.Class.newInstance(Class.java:303)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:595)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28