我目前正在开发一个发送电子邮件的 java webapp。因为我在 Tomcat 7 上部署它,所以我mail/Session
在我的context.xml
文件中配置了资源并将最新版本的复制mail.jar
到 Tomcat 的 lib 文件夹中。
当我部署并运行我的 Web 应用程序时,我得到以下异常:
java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session
这是我用来在课堂上发送电子邮件的代码:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Session session = (Session) envCtx.lookup("mail/Session");
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
InternetAddress toIA[] = new InternetAddress[1];
toIA[0] = new InternetAddress(to);
message.setRecipients(Message.RecipientType.TO, toIA);
message.setSubject(subject);
message.setContent(mensagem, "text/plain");
Transport.send(message);
我知道这可能会被抛出,因为我mail.jar
在 Tomcat lib 文件夹和我的 web app lib 文件夹中都有,问题是我不能简单地从 Maven 中删除依赖项pom.xml
,因为如果我这样做,Eclipse 会说它找不到某些类(例如Session
)。
如果我的 web 应用程序中没有相应的 JAR,我该如何使用负责发送电子邮件的类?