gpt4 book ai didi

java - 无法在 Glassfish 上部署的应用程序中发送电子邮件

转载 作者:行者123 更新时间:2023-12-01 15:34:56 26 4
gpt4 key购买 nike

我实际上花了两天时间解决这个问题,在谷歌上到处搜索,但仍然无法解决它,让我们看看是否有人发现我做错了什么:

我在 Glassfish 中定义了一个 javaMail session ,其中包含与邮件服务器通信所需的所有参数(主机、用户、通行证、端口等)。我部署了一个应用程序,该应用程序使用 jndi 查找该 session 并尝试发送电子邮件。代码是:

InitialContext ctx = new InitialContext();
Session session = (Session) ctx.lookup("mail/javaMailSession");

Message msg = new MimeMessage(session);
msg.setSubject("test");
msg.setRecipient(RecipientType.TO, new InternetAddress("zzz@yyy.com", "zzz"));
msg.setFrom(new InternetAddress("jjjj@kkkk.com", "hhh"));
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("this is a test email");

Transport.send(msg);

现在,如果我在没有 mail.jar 依赖项的情况下部署我的应用程序,那么当加载包含此代码的类时,我会得到一个

ClassNotFoundException:javax.mail.Message,表示mail.jar不在类路径中。

如果我将 mail.jar 放入 domain/lib 文件夹中,或者只是将类路径条目添加到我的应用程序 list 中(包括 mail.jar 的位置),我将不再遇到 ClassNotFoundException,但是当查找时被执行并且我检索 session ,我得到了最奇怪的

ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session.

这意味着我有两个版本的 mail.jar,但正如我所说,如果我从/lib 中删除它或不将类路径条目添加到 list 中,它甚至找不到一个版本。

我使用的是Ubuntu 11.10,使用Glassfish 3.1.1java-6-sun-1.6.0.26(所以激活。 jar 不是问题)。任何想法都会非常感激,因为我想不出其他的了。

最佳答案

JavaMail(所有 javax.mail.* 类)包含在 GlassFish 中(假设您使用的是完整的 Java EE 平台版本,而不仅仅是 Web Profile 版本);您不需要在应用程序中包含 mail.jar 或手动安装它。我无法解释为什么当你这样做时找不到 javax.mail.Message 。 ClassCastException 表明您有两个版本的 mail.jar 可供应用程序使用。

关于java - 无法在 Glassfish 上部署的应用程序中发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9017555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com