JavaMail store.connect()超时 - 无法通过Java读取gmail收件箱

时间:2012-10-08 09:18:05

标签: timeout imap javamail inbox

我正在尝试连接到我的gmail收件箱以通过Java Application读取消息。我正在使用..

  • jdk1.6.0_13
  • javamail-1.4.3 libs - (mail.jar,mailapi.jar,imap.jar)

以下是我的代码: MailReader.java

import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;

public class MailReader
{
    public static void main(String[] args)
    {
        readMail();     
    }

    public static void readMail()
    {
        Properties props = System.getProperties();
        props.setProperty("mail.store.protocol", "imaps");
        try
        {
            Session session = Session.getDefaultInstance(props, null);
            Store store = session.getStore("imaps");
            store.connect("imap.gmail.com", "myEmailId@gmail.com", "myPwd");
            System.out.println("Store Connected..");

            //inbox = (Folder) store.getFolder("Inbox");
            //inbox.open(Folder.READ_WRITE);
            //Further processing of inbox....
        }
        catch (MessagingException e)
        {
            e.printStackTrace();            
        }
    }
}

我希望连接商店,但调用store.connect()永远不会返回,我得到低于输出:

  
     

javax.mail.MessagingException:连接超时;
  嵌套   例外是:
  java.net.ConnectException:连接超时
  在   com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:441)
  在   javax.mail.Service.connect(Service.java:233)
  在   javax.mail.Service.connect(Service.java:134)
  在   ReadMail.readMail(ReadMail.java:21)
  在ReadMail.main(ReadMail.java:10)

但是,我可以使用SMTP,Transport.send()和相同的Gmail帐户通过Java发送电子邮件。但无法阅读电子邮件。 什么可以解决方案?

1 个答案:

答案 0 :(得分:1)

IMAP在另一个端口(非安全端口为143,安全端口为993)上发送邮件(25),我怀疑它已被阻止。你可以在那个端口上telnet到那个服务器,例如。

telnet imap.gmail.com {port number}

这表明你是否有网络连接。