gpt4 book ai didi

JavaMail - 使用代理服务器,因为连接到办公室网络时读取 gmail 代码不起作用

转载 作者:行者123 更新时间:2023-12-01 18:36:53 29 4
gpt4 key购买 nike

当我未连接到办公室网络时,下面的读取 gmail 的代码可以正常工作

      Properties props = new Properties();        
props.setProperty("mail.imap.ssl.enable", "true");
Session mailSession = Session.getInstance(props);
mailSession.setDebug(true);
Store mailStore = mailSession.getStore("imap");
mailStore.connect("imap.gmail.com", "abc@gmail.com", "pwd");

但是,当连接到办公室网络时,相同的代码不起作用。错误是:

DEBUG: setDebug: JavaMail version 1.6.2
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: closeFoldersOnStoreFailure
DEBUG IMAP: trying to connect to host "imap.gmail.com", port 993, isSSL true
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: imap.gmail.com, 993; timeout -1;
nested exception is:
java.net.UnknownHostException: imap.gmail.com
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:740)
at javax.mail.Service.connect(Service.java:366)
at javax.mail.Service.connect(Service.java:246)
Caused by: java.net.UnknownHostException: imap.gmail.com
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:608)
at java.base/java.net.Socket.connect(Socket.java:557)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:359)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:134)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:131)
at com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:763)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:698)
... 4 more

谷歌搜索后发现建议使用代理。根据https://javaee.github.io/javamail/FAQ#proxy从 JavaMail 1.6.0 开始,我们可以设置代理详细信息属性。因此将这些属性添加到代码中:

        Properties props = new Properties();
props.setProperty("mail.imap.ssl.enable", "true");
props.setProperty("mail.protocol.proxy.host", "hostdetails");
props.setProperty("mail.protocol.proxy.port", "80");
//props.setProperty("mail.imap.socks.host", "hostdetails");
//props.setProperty("mail.imap.socks.port", "80");
Session mailSession = Session.getInstance(props);
mailSession.setDebug(true);
Store mailStore = mailSession.getStore("imap");
mailStore.connect("imap.gmail.com", "abc@gmail.com", "pwd");

遇到同样的错误。也尝试添加 props.setProperty("mail.imap.socks.host", "hostdetails"); 但遇到了相同的错误。知道如何让它发挥作用吗?

最佳答案

正如 @Bill Shannon 所建议的,它在设置以下属性后起作用

props.setProperty("mail.imap.proxy.host", "hostdetails"); 
props.setProperty("mail.imap.proxy.port", "portNumber");

你可以在上面看到我对 Bill Shannon 的评论的评论。即使在添加以上 2 行之后,我最初也遇到了异常,然后我通过 VPN 连接到了办公室。一旦我去办公室并测试它可以使用这些代理设置!现在我再次使用 VPN 连接到办公室,并且相同的代码工作得很好!!!

关于JavaMail - 使用代理服务器,因为连接到办公室网络时读取 gmail 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60017154/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com