我已经接管了一些旧的遗留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>
谷歌搜索表明实际的邮件罐子可能丢失,所以我下载了javamail,解压缩并将它们放入tomcat WEB-INF目录。没有改变。
这是一个带有CentOs(5.5?)的rackhostcloud设置。这是由旧团队配置的(早已不复存在)。可以说,我不会被称为最好的Linux管理员,但基本命令行的东西没有问题。我可以运行yum
就好了,但我认为此时还有更多内容。也许是一些Java配置?
我只想发一封简单的邮件......
任何建议,非常感谢。
答案 0 :(得分:5)
邮件罐需要进入WEB-INF / lib,而不是WEB-INF。您需要重新启动应用程序或整个tomcat服务器才能使其生效。
根据您的描述,我猜你正在使用$ TOMCAT_HOME / webapps /中的爆炸webapp目录。首先要注意的是:如果目录旁边有一个.war,那么战争就是“真相的来源”。战争是一种网络ARchive。它基本上是一个包含整个webapp目录的zip文件,而Tomcat为了性能目的提取该目录。这对你来说意味着无论你对目录做了什么,如果战争文件的时间戳以某种方式得到更新,它将把你对目录所做的所有更改都吹走,并将其替换为战争的内容。
此后,为了使用邮件类,您需要的只是一个文件结构:
$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
答案 1 :(得分:2)
我遇到了同样的问题。这不是你的错,而是Tomcat的。在Tomcat6上,如果你将它放在WEB-INF / lib文件夹中,那么mail.jar将无法正常工作,就像你使用任何其他jar一样。你必须将mail.jar放在公共lib文件夹(/ usr / share / tomcat6 / lib)中,摆脱WEB-INF / lib文件夹中的mail.jar,重新启动Tomcat6,它才会开始工作。你不需要使用tomcat6的激活jar。
其他应用程序服务器可能会在mail.jar位于WEB-INF / lib中正常工作,或者更可能已经内置了自己的邮件库。使用Tomcat6,您必须执行上述操作。
答案 2 :(得分:1)
将此代码移至Servlet,让IDE指南整理您的导入并建议如何修复编译问题。此代码在.jsp
中没有位置然后仔细检查WEB-INF/lib
是否包含所有必需的罐子。