在其他系统上使用Javamail连接到IMAP

时间:2013-07-26 05:42:07

标签: java imap javamail

我在我的项目中使用此代码连接到Gmail的收件箱以及我的uni邮件。它在我的系统上工作正常,我可以连接到两者的IMAP。但只要在其他系统上尝试使用相同的代码,Gmail就会暂停连接。它无法连接。我搜索了一下,发现我的系统正在侦听端口443,而在我测试的另一个系统上,它没有侦听端口443.我试图在另一个系统中给出一些入站规则来打开443端口但是一旦我运行我的编程它就会被阻止。

这个问题是由端口引起的吗?或者我在这里错过了什么?

public class MailConnection {
    Folder inbox;

public MailConnection() throws MessagingException{
    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imap");
    try{
       Session session = Session.getInstance(props, null);
       Store store = session.getStore("imap");
       store.connect("mailbox.xyz.com", "emailId@xyz.com", "password");
       System.out.println(store);

       inbox = store.getFolder("Inbox");
       System.out.println("No of Unread Messages : " + inbox.getUnreadMessageCount());
    }
    catch (NoSuchProviderException e){
        e.printStackTrace();
        System.exit(1);
    }
}

1 个答案:

答案 0 :(得分:0)

您正在连接到非SSL IMAP端口 - 143.我不知道“443”来自何处。

Gmail需要SSL IMAP端口。有关示例,请参阅this JavaMail FAQ entry

如果不起作用,请参阅these debugging tips