个位高手好 我有个关于tomcat+servlet邮箱方面的问题 请高手帮助

caojinhui 2007-12-25 10:38:10
我用的是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
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fastunit 2007-12-25
  • 打赏
  • 举报
回复
我用的是apache的commons-email组件,使用很简单。
需要注意的是,如果用163、sina等邮箱来测试会拒绝连接:
javax.mail.MessagingException: Could not connect to SMTP host: mail.163.com, port: 25;
...
java.net.ConnectException: Connection refused: connect
...

import org.apache.commons.mail.SimpleEmail;

public class MailTest {

public static void sendMail() {
String host = "mail.fastunit.com";
String charset = "UTF-8";
String username = "support@fastunit.com";
String password = "***";
String to = "support@fastunit.com";
String from = "fastunit.com@hotmail.com";
String fromName = "support";
String subject = "subject标题";
String msg = "msg内容";
try {
SimpleEmail email = new SimpleEmail();
email.setHostName(host);
email.setAuthentication(username, password);
// 必须放在setMsg()前面,否则乱码
email.setCharset(charset);
email.addTo(to);
email.setFrom(from, fromName);
email.setSubject(subject);
email.setMsg(msg);
email.send();
System.out.println("successfull");
} catch (Exception e) {
e.printStackTrace();
}
}

}
caojinhui 2007-12-25
  • 打赏
  • 举报
回复
这次报的是这个错
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: Servlet execution threw an exception


root cause

java.lang.NoClassDefFoundError: javax/activation/DataSource
com.GetPass.doPost(GetPass.java:50)
com.GetPass.doGet(GetPass.java:17)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28
caojinhui 2007-12-25
  • 打赏
  • 举报
回复
我复制了 可是还是不行
老紫竹 2007-12-25
  • 打赏
  • 举报
回复
缺少 mail.jar

我想你一定有这个文件,把他复制到 tomcat/shared/lib 目录下面!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧