首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javamail在Windows上运行,而不是在Linux上运行

Javamail在Windows上运行,而不是在Linux上运行
EN

Stack Overflow用户
提问于 2011-09-08 08:35:44
回答 2查看 717关注 0票数 2

我在使用Javamail时遇到了一个非常令人沮丧的问题。

因此,简单的非加密、无附件的电子邮件在linux和Windows中都有效。

当我尝试发送附件或使用TLS加密发送电子邮件时,javamail仅在linux上崩溃,而不是在Windows上。

异常在Transport.send(msg)抛出,这不是我写的。

全栈跟踪是这样的。

代码语言:javascript
运行
复制
java.lang.NullPointerException
        at org.jpackage.mail.inet.smtp.SMTPConnection.getResponse(SMTPConnection.java:814)
        at org.jpackage.mail.inet.smtp.SMTPConnection.getAllResponses(SMTPConnection.java:841)
        at org.jpackage.mail.inet.smtp.SMTPConnection.quit(SMTPConnection.java:537)
        at gnu.mail.providers.smtp.SMTPTransport.close(SMTPTransport.java:549)
        at javax.mail.Transport.doSend(Transport.java:205)
        at javax.mail.Transport.send(Transport.java:75)

这有什么可能的原因吗?我只是在处理这个应用程序在Linux上失败的时候真的很沮丧。

EN

回答 2

Stack Overflow用户

发布于 2011-09-09 01:37:18

我从Oracle下载并检查了javamail 1.4.4发行版。在包含的jar文件中没有任何org.jpackage.*gnu.mail.*包,所以您必须从其他地方获得它们。

我建议您清理类路径并删除伪包,然后重试。

票数 3
EN

Stack Overflow用户

发布于 2019-02-22 15:09:47

我遇到了类似的问题,但有完全相同的例外。我在两个不同的环境( DOS提示符和JOnAS应用服务器)中运行了相同的代码,但都没有得到相同的结果:邮件在DOS提示符下发送成功,但在JOnAS上发送失败。

我激活了邮件会话的调试模式,并比较了SMTP跟踪。它们大体相同,除了用户名和口令测试值被发送用于身份验证:我注意到在DOS (工作)版本中,测试转换的密码有填充(例如,密码“base64”被转换为"dGVzdA=="),但在JOnAS版本(不工作)中,base64转换的密码没有填充(密码“base64”被转换为"dGVzdA")。这导致身份验证失败。

错误的base64编码是由gnu-mail.jar和/或gnu-providers.jar库造成的,这些库存在于JOnAS默认库中,并且是加载的,而不是我的WAR中嵌入的jar。

我通过从JOnAS默认库文件夹中删除这些jars修复了这个问题。JOnAS重启后,邮件发送成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7341973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档