java - 通过javamail连接错误

标签 java jakarta-mail mail-server james

我正在尝试使用 imap 协议(protocol)连接到 james 服务器,但出现以下异常:

Exception in thread "main" javax.mail.MessagingException: Network is unreachable: connect;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:611)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at mail.main(mail.java:112)
Caused by: java.net.SocketException: Network is unreachable: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(PlainSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:267)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:277)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:107)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:103)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:578)
... 3 more

James 服务器已经在运行,我不明白上述异常的原因。这是因为 James 不支持这个协议(protocol)还是有其他原因?

这是尝试连接到 James 服务器的 Javamail 应用程序的源代码:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class mail{

public static void main(String[] argts){


        try {


            Properties props=new Properties();

            props.put("mail.host", "127.0.0.1 ");
            props.put("mail.smtp.auth","true");

  Session  session = Session.getInstance(props, new javax.mail.Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("blue", "blue");
}
});




int Spam=0;
Store store=session.getStore("imap");
store.connect("localhost", "red", "red");
Folder folder=store.getFolder("IMAPFolder");
Folder folder1=store.getFolder("Spam");
boolean b=folder1.create(Spam);
System.out.println(b);  

        } catch (Throwable t) {
           t.printStackTrace();
        }


        }

    }

}

最佳答案

快速检查一下您是否可以仅使用 telnet 与 IMAP 服务器通信:

telnet localhost 143

如果无法连接,则 James 不会发布 IMAP 连接(假设使用标准 IMAP 端口)。

我从下面看到您正在使用 James 2.x。 This link表明不支持 IMAP。

关于java - 通过javamail连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1500845/

相关文章:

java - 字符串标记后缀替换

java - 如何更改 Codename 1 中 Google Maps api 中路径的样式

JavaMail 问题 : Can't send command to SMTP host

mysql - 为 postfix/dovecot 的 mysql 表中的所有用户设置别名

php - 如果电子邮件已发送,则从邮件服务器获取响应

docker - RainLoop + tomav/docker-mailserver:无法从RainLoop Webmail客户端连接到服务器

java - 无法弄清楚为什么我得到空值

java - 无法在 Apache Kafka 中启动 Zookeeper 服务器

Java 邮件程序不工作

java - 将变量从 AsyncTask 传递到 doInBackground Android