【问题标题】:Cannot connect to mailserver using javamail无法使用 javamail 连接到邮件服务器
【发布时间】:2013-09-10 07:12:41
【问题描述】:

我正在尝试连接到 IMAP 服务器来阅读邮件,因为我知道 IMAP 邮件服务器是本地 APache JAMES 邮件服务器。使用 pop3 协议时,一切都成功,在客户端之间发送/检索消息...但是当我将协议更改为 imap 时,抛出连接异常,我不知道为什么...

这是我的代码:

 @Stateless
 public class Mailer{

 @Resouces(name = "mail/javamailsession")
 private Session session;

 public void connect(){
 IMAPStore store = (IMAPStore)session.getStore("imap");
 store.connect("localhost","test@mydomain.org","myPass");
 ...
 ...

从这里抛出异常:

 store.connect(...

例外是:

    java.mail.MessagingException : Connection refused : connect;
     nested exception is :
     java.net.ConnectionException: Connection refused : connect

知道telnet进程的结果是:

   Me  :     telnet localhost imap
   Cmd :     Ok James IMAP4rev1 server server pc_name is ready
   Me  :     01 login test@localhost 123456
   Cmd :     01 Ok login completed

这意味着在服务器中启用了 imap... 那么为什么会发生这种异常:S 任何人都有一个想法?

【问题讨论】:

  • 你在localhost有运行smtp服务器吗?
  • 是的,我有一个在 localhost 中运行的 smtp 服务器,它是 JAMES Mailserver ...
  • 我遇到了这个问题,禁用 ipv6 (stackoverflow.com/questions/14064111/…) 为我解决了这个问题。

标签: jakarta-mail java-ee-6 mail-server james


【解决方案1】:

很可能您的防火墙或防病毒产品允许通过 telnet 进行连接,但阻止来自您的应用程序的连接。看起来您的应用程序是 Java EE 应用程序。我假设 Java EE 服务器与邮件服务器在同一台机器上运行,并且您从该机器运行 telnet。

【讨论】:

  • 我错过了告诉你我在虚拟机中工作,这可能是这个连接问题背后的原因吗?
  • 如果一切都在同一个虚拟机上运行,​​那似乎不太可能。可以肯定的是,JAMES 邮件服务器、运行程序的应用程序服务器和 telnet 命令都在同一个虚拟机中运行,对吧?
  • 是的,一切都在同一个虚拟机上运行。现在,我在另一台虚拟机上准备了我的环境并启动了我的应用程序,幸运的是一切正常。没有连接问题!相同的环境(James、JavaMail、Glassfish)可以在虚拟机上运行,​​但不能在另一个虚拟机上运行。知道在两台机器上,没有防火墙,也没有防病毒软件。
  • 我仍然不确定这个问题背后的原因。
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 2011-10-12
  • 2019-09-08
  • 2018-11-11
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多