无法使用JavaMail API编译JSP文件

无法使用JavaMail API编译JSP文件,java,jsp,tomcat,jakarta-mail,Java,Jsp,Tomcat,Jakarta Mail,我正在努力寻找一个使用JSP发送电子邮件的代码 我有一个html表单来收集消息的文本体,然后代码应该包含其余的信息,以减少用户在向团队发送通知时的工作量 JSP代码如下所示,我不断收到错误消息,说会话无法解析为类型,消息无法解析为类型,mimessage无法解析为类型,等等 <%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*" %> <% // SMTP Authentication setti

我正在努力寻找一个使用JSP发送电子邮件的代码

我有一个html表单来收集消息的文本体,然后代码应该包含其余的信息,以减少用户在向团队发送通知时的工作量

JSP代码如下所示,我不断收到错误消息,说会话无法解析为类型,消息无法解析为类型,mimessage无法解析为类型,等等

<%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*" %>

<%

// SMTP Authentication settings
String host = "smtp.e-tools.com.ve";
String user = "info@e-tools.com.ve";
String pass = "password";

// E-Mail settings
String to = "shee_mass@hotmail.com";
String from = "info@e-tools.com.ve";
String subject = "E-tools Notification - New Document/Comment to see";
String mesg = request.getParameter("smsInput");

boolean sessionDebug = false;
Properties props = System.getProperties();
props.put("mail.host", host);
props.put("mail.transport.protocol", "smtp");

Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);

// Create message to send
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);

// Send message
Transport transport = mailSession.getTransport("smtp");
transport.connect(host, user, user);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();

%>

获取无法解析为类型JSP编译错误,而导入看起来很好也可能意味着这些类根本不存在于类路径中。这就像在普通Java中运行时得到一个
NoClassDefFoundError

事实上,与真实的JavaEE容器(如Glassfish)相反,像Tomcat这样的简单servletcontainer并不随JavaMail一起提供。您需要确保已通过JavaMail JAR将其添加到webapp的
/WEB-INF/lib

在JSP文件而不是Java类中编写原始Java代码并不好笑。

获取无法解析为类型JSP编译错误,而导入看起来很好也可能意味着这些类根本不存在于类路径中。这就像在普通Java中运行时得到一个
NoClassDefFoundError

事实上,与真实的JavaEE容器(如Glassfish)相反,像Tomcat这样的简单servletcontainer并不随JavaMail一起提供。您需要确保已通过JavaMail JAR将其添加到webapp的
/WEB-INF/lib


在JSP文件而不是Java类中编写原始Java代码并不好笑。

Sheeyla,我也有同样的问题。我正在使用Tomcat6。问题是Tomcat6不喜欢WEB-INF/lib文件夹中的mail.jar文件夹,坚持认为它是一个全局共享的jar来工作。将mail.jar放在CATALINA_HOME/lib文件夹中(默认情况下为/usr/share/tomcat6/lib),从WEB-INF/lib文件夹中删除它,重新启动tomcat6,它就会工作。你不需要activation.jar,因为你很可能也在java 1.6上,所以你也可以摆脱它。

Sheeyla,我也有同样的问题。我正在使用Tomcat6。问题是Tomcat6不喜欢WEB-INF/lib文件夹中的mail.jar文件夹,坚持认为它是一个全局共享的jar来工作。将mail.jar放在CATALINA_HOME/lib文件夹中(默认情况下为/usr/share/tomcat6/lib),从WEB-INF/lib文件夹中删除它,重新启动tomcat6,它就会工作。你不需要activation.jar,因为你很可能也在java 1.6上,所以你也可以去掉它。

我已经将jar下载到Web Inf的lib文件夹中,但是我仍然收到相同的错误…不知道还能做什么…页面导入看起来很好(我忽略了你没有运行你认为正在运行的代码的可能性). 但是
/Web Inf/lib
无效。Java区分大小写。它应该是
/WEB-INF/lib
。您需要至少将从下载的ZIP文件中提取的
mail.jar
文件放在那里(因此不是整个下载的ZIP文件或其他东西)。如果您运行的是Java1.5,那么还需要
activation.jar
(根据我回答中的下载链接)。谢谢BalusC,但所有这些都已经完成了。。。。区分大小写的问题只是我在这里打字,因为我很绝望。。。。我在lib文件夹中有所有的jar,我也有activation.jar……您使用的是带有JSP自动完成和帮助的IDE吗?例如Eclipse?它的JSP编辑器应该会出现类似“Import
javax.mail
无法解析”这样的问题。如果没有,并且您的JSP代码没有IDE验证错误,那么可能您的运行时类路径毕竟只是一个大混乱。在JSP文件而不是Java类中编写Java代码确实是一场噩梦。我真的很高兴你终于自己体验到了。我已经将JAR下载到了Web Inf的lib文件夹中,但我仍然收到了相同的错误…不知道还有什么要做…页面导入看起来很好(我将忽略你没有运行你认为正在运行的代码的可能性)。但是
/Web Inf/lib
无效。Java区分大小写。它应该是
/WEB-INF/lib
。您需要至少将从下载的ZIP文件中提取的
mail.jar
文件放在那里(因此不是整个下载的ZIP文件或其他东西)。如果您运行的是Java1.5,那么还需要
activation.jar
(根据我回答中的下载链接)。谢谢BalusC,但所有这些都已经完成了。。。。区分大小写的问题只是我在这里打字,因为我很绝望。。。。我在lib文件夹中有所有的jar,我也有activation.jar……您使用的是带有JSP自动完成和帮助的IDE吗?例如Eclipse?它的JSP编辑器应该会出现类似“Import
javax.mail
无法解析”这样的问题。如果没有,并且您的JSP代码没有IDE验证错误,那么可能您的运行时类路径毕竟只是一个大混乱。在JSP文件而不是Java类中编写Java代码确实是一场噩梦。我真的很高兴你终于亲自体验了。