首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MailConnectException:无法连接到主机,端口: smtp.gmail.com,110;超时-1;

MailConnectException:无法连接到主机,端口: smtp.gmail.com,110;超时-1;
EN

Stack Overflow用户
提问于 2014-08-06 19:21:21
回答 2查看 24.9K关注 0票数 3

我正在尝试从收件箱中读取消息,但我一直得到异常"MailConnectException:未能连接到主机,端口: smtp.gmail.com,110;超时值-1;"

我禁用了我的AntiVir和防火墙,但没有帮助。

下面是代码和控制台报告:

代码语言:javascript
复制
public class JavaMailPOP3eMail {

    private String server = null;
    private String user = null;
    private String pass = null;

    public void sendMail() {
        server = "smtp.gmail.com";
        user = "user123@gmail.com";
        pass = "pass123";

        Store store = null;
        Folder folder = null;
        try {
            // get default session
            Properties properties = System.getProperties();
            Session session = Session.getDefaultInstance(properties, null);
            session.setDebug(true);
            // get a pop3 message store, and connect to it
            store = session.getStore("pop3");
            store.connect(server, user, pass);
            // get the default folder
            folder = store.getDefaultFolder();
            if (folder == null) {
                throw new Exception("No default folder");
            }
            // get the inbox
            folder = folder.getFolder("INBOX");
            if (folder == null) {
                throw  new Exception("No POP3 INBOX");
            }
            // open the folder read only
            folder.open(Folder.READ_ONLY);
            // get the messages and print them
            Message[] messages = folder.getMessages();
            for (int i = 0; i < messages.length; i++) {
                printMail(messages[i]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (folder != null) {
                    folder.close(false);
                }
                if (store != null) {
                    store.close();
                }
            } catch (MessagingException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void printMail(Message message) {
        try {
            // get header information
            String from = null;
            from = ((InternetAddress) message.getFrom()[0]).getPersonal();
            // print sender details
            System.out.println("From: " + from);
            // get and print subject
            String subj = message.getSubject();
            System.out.println("Subject: " + subj);
            // get the message itself
            Part messagePart = message;
            Object content = messagePart.getContent();
            if (content instanceof Multipart) {
                messagePart = ((Multipart) content).getBodyPart(0);
                System.out.println("[ Multipart Message ]");
            }
            // get the content type
            String contentType = messagePart.getContentType();
            // if the content is plain text, print it
            System.out.println("Content: " + contentType);
            if (contentType.startsWith("text/plain") || 
                contentType.startsWith("text/html")) {
                InputStream is = messagePart.getInputStream();
                BufferedReader br = new BufferedReader(
                    new InputStreamReader(is)
                );
                String line = br.readLine();
                while (line != null ) {
                    System.out.println(line);
                    line = br.readLine();
                }
            }
            System.out.println("");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public static void main(String[] args) {
        JavaMailPOP3eMail mail = new JavaMailPOP3eMail();
        mail.sendMail();
    }

}

例外:

代码语言:javascript
复制
DEBUG: setDebug: JavaMail version 1.5.2
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: false
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: false
DEBUG POP3: mail.pop3.starttls.required: false
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "smtp.gmail.com", port 110, isSSL false
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 110; timeout -1;
  nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:211)
    at javax.mail.Service.connect(Service.java:364)
    at javax.mail.Service.connect(Service.java:245)
    at example3.JavaMailPOP3eMail.sendMail(JavaMailPOP3eMail.java:43)
    at example3.JavaMailPOP3eMail.main(JavaMailPOP3eMail.java:118)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:312)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
    at com.sun.mail.pop3.Protocol.<init>(Protocol.java:112)
    at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:264)
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:207)

编辑:

POP已启用,但仍然无法工作

你还知道原因是什么吗?

代码语言:javascript
复制
DEBUG: setDebug: JavaMail version 1.5.2
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: false
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: false
DEBUG POP3: mail.pop3.starttls.required: false
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "pop.gmail.com", port 110, isSSL false
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: pop.gmail.com, 110; timeout -1;
  nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:211)  at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:211)
    at javax.mail.Service.connect(Service.java:364)
    at javax.mail.Service.connect(Service.java:245)
    at example3.JavaMailPOP3eMail.sendMail(JavaMailPOP3eMail.java:41)
    at example3.JavaMailPOP3eMail.main(JavaMailPOP3eMail.java:116)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:312)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236)
    at com.sun.mail.pop3.Protocol.<init>(Protocol.java:112)
    at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:264)
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:207)
    ... 4 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-06 19:26:16

根据这个链接来自Gmail的说法,服务器应该是pop.gmail.com (而不是smtp.gmail.com),您必须允许POP访问您的帐户才能工作。

票数 2
EN

Stack Overflow用户

发布于 2018-02-02 08:05:06

大多数人无法在SMTP中配置Gmail ID。

首先,您必须对gmail帐户做一些设置:

1)在该帐户上设置安全性较低的应用程序。

2)启用pop从帐户设置选项

3)如果是windows服务器,则在同一服务器上登录一次gmail帐户。

它将百分之百地发挥作用。

谢谢Sajju

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

https://stackoverflow.com/questions/25168481

复制
相关文章

相似问题

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