【问题标题】:Cannot compile JSP file with JavaMail API无法使用 JavaMail API 编译 JSP 文件
【发布时间】:2011-07-07 20:10:34
【问题描述】:

我正在努力寻找可用于使用 JSP 发送电子邮件的代码。

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

JSP代码如下,一直收到错误信息说Session不能解析为类型,Message不能解析为类型,MimeMessage不能解析为类型等等......

<%@ 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();

%>

【问题讨论】:

    标签: java jsp tomcat jakarta-mail


    【解决方案1】:

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

    事实是,与真正的 Java EE 容器(如 Glassfish)相反,一个简单的 servlet 容器(如 Tomcat)不附带 JavaMail。您需要确保自己通过downloading JavaMail JAR 添加了它,并将它们放入 webapp 的/WEB-INF/lib

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

    【讨论】:

    • 我已经将 jars 下载到 Web-Inf 的 lib 文件夹中,但我仍然遇到同样的错误......不知道还能做什么......
    • 页面导入看起来不错(我将忽略您没有运行您认为正在运行的代码的可能性)。但是/Web-Inf/lib 无效。 Java 区分大小写。应该是/WEB-INF/lib。您需要将至少从下载的 ZIP 文件中提取的 mail.jar 文件放在其中(因此不是整个下载的 ZIP 文件或其他东西)。如果您运行的是 Java 1.5,则还需要 activation.jar(根据我的答案中的下载链接)。
    • 谢谢BalusC,但所有这些都已经完成了......区分大小写的问题只是我在这里打字,因为我很绝望......我在lib文件夹中有所有的罐子,我也有activation.jar....
    • 您是否使用带有 JSP 自动完成和辅助功能的 IDE?例如 Eclipse?它的 JSP 编辑器应该有类似“Import javax.mail cannot be resolved”这样的问题。如果没有,并且您的 JSP 代码没有 IDE 验证错误,那么您的运行时类路径可能只是一团糟。
    • 在 JSP 文件而不是 Java 类中编写 Java 代码确实是一场噩梦。我真的很高兴你终于自己体验了。
    【解决方案2】:

    Sheeyla,我遇到了完全相同的问题。我正在使用Tomcat6。问题是 Tomcat6 不喜欢 mail.jar 文件夹位于 WEB-INF/lib 文件夹中,并坚持认为它是一个全局共享的 jar 来工作。将mail.jar放入CATALINA_HOME/lib文件夹(默认为/usr/share/tomcat6/lib),从WEB-INF/lib文件夹中删除,重启Tomcat6即可。你不需要activation.jar,因为你很可能在java 1.6上,所以你也可以摆脱它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2017-12-13
      相关资源
      最近更新 更多