我接管了一些旧的遗留 JSP 代码,并想为其添加一些邮件支持。好吧,它并没有那么顺利,因为我收到错误,例如:
Session cannot be resolved to a type
An error occurred at line: 39 in the jsp file: /xxxxx/test.jsp
Message cannot be resolved to a type
MimeMessage cannot be resolved to a type
等等
代码,样本取自某处(不漂亮......):
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page session="true"%>
<html>
<head>
<title>JSP JavaMail Example </title>
</head>
<body>
<%
String to = "sssssss@gmail.com";
String from = "admin@yyyyyy.com";
String subject = "subject";
String messageText = "body";
Properties props = System.getProperties();
//props.put("mail.host", host);
//props.put("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);
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);
Transport.send(msg);
%>
</body>
</html>
Google 显示实际的邮件 jar 可能丢失了,所以我下载了 javamail,提取 jar 并将它们放入 tomcat WEB-INF 目录中。没有变化。
这是一个带有 CentOs(5.5?)的 rackhostcloud 设置。这是由旧团队配置的(早已不复存在)。可以肯定地说,我不会成为周围最好的 Linux 管理员,但基本的命令行东西是没有问题的。我可以很好地运行 yum
,但我认为此时还有更多功能。也许一些 Java 配置?
我只想发一封简单的邮件...
任何建议,非常感谢。
最佳答案
邮件 jar 需要放在 WEB-INF/lib 中,而不是 WEB-INF 中。您需要重启应用程序或整个 tomcat 服务器才能生效。
根据您的描述,我猜您正在使用位于 $TOMCAT_HOME/webapps/的展开的 webapp 目录。首先要注意:如果目录旁边有一个 .war,那么 war 就是“真实来源”。一场 war 是一个网络文件。它基本上是一个包含整个 webapp 目录的 zip 文件,Tomcat 出于性能目的提取该目录。这对你来说意味着无论你对目录做什么,如果 war 文件的时间戳以某种方式更新,它会清除你对目录所做的所有更改,并再次用 war 的内容替换它。
现在,为了使用邮件类,您所需要的只是一个文件结构,如下所示:
$TOMCAT_HOME
bin
conf
lib
...
webapps
<your app>
test.jsp (Can be in any directory under <your app> except WEB-INF)
WEB-INF
lib
mail.jar
activation.jar
关于java - JSP: session 无法解析为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6748281/