Im正试图通过代理从POP3服务器获取邮件。大多数“教程”建议做一些类似的事情
Properties p = System.getProperties();
p.setProperty("proxySet", "true");//does this line even do anything?
p.setProperty("socksProxyHost", proxyHost);
p.setPorperty("socksProxyPort", proxyPort);
p.setProperty("socksProxyVersion", "5");//or 4 if you want to use 4
p.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
p.setProperty("mail.pop3.socketFactory.fallback", "false");//also not sure what it does
p.setProperty("mail.pop3.port", portOnHostYouWantToTalkTo);
p.setProperty("mail.pop3.socketFactory.port", portOnHostYouWantToTalkTo);
Session session = Session.getDefaultInstance(p, null);
//or session = Session.getInstance(p, null);
URLName urlName = new URLName(protocol, hostYouwantToTalkTo, portOnHostYouWantToTalkTo, null, mailbox, mailboxPassword);
Store store = session.getStore(urlName);
现在,如果我做这样的事情,我会得到一个例外:
java.net.SocketException: Can't connect to SOCKS proxy:Connection timed out: connect.
我的POP3服务器没有记录任何连接,这表明我的代码中存在代理问题或错误。我现在使用73.29.157.190:29099。
2)如果我有
Properties p = new Properties();
//all the same logic and stuff
Session = Session.getInstance(p, null);
我的POP3服务器记录了一个来自localhost的连接,并且正常工作,这表明我没有使用代理连接到它,其他一切都很好。
我的问题是,为什么“教程”使用System.getProperties()并将其传递给getInstance()?每个会话实例都将保留对System.Properties的引用。因此,每次尝试创建一个新的会话实例或以任何方式更改System.getProperties()时,每个会话实例都会受到影响,因此您最好重用相同的会话实例。
javamail是否需要在System.Properties中特别设置一些内容,而不是传递给Session的内容?
另外,为了让javamail使用代理,您需要设置哪些参数?System.Properties有什么使它工作起来不像我的新属性?一个很好的教程或文档的链接来解释它将非常感谢。
谢谢!
首先,摆脱所有插座工厂的东西,你不需要它。
接下来,确保您真正拥有一个SOCKS代理,而不仅仅是一个web代理。如果需要,请参阅以下JavaMail FAQ条目。
为SOCKS代理设置系统属性将导致来自程序的所有网络连接通过代理服务器,这可能不是您想要的。
本文向大家介绍SMTP和POP3之间的区别,包括了SMTP和POP3之间的区别的使用技巧和注意事项,需要的朋友参考一下 SMTP和POP3都是在邮件服务器之间发送和接收消息所必需的消息协议。根据设计这些协议的性质和任务,我们可以区分它们。 以下是SMTP和POP3协议之间的重要区别。 序号 键 SMTP协议 POP3协议 1 定义 SMTP也称为简单邮件传输协议,它是TCP / IP协议应用程序层
问题内容: 在程序中使用用户身份验证的代理的最佳/最简便方法是什么?我目前有这个,但是打开浏览器时我需要输入用户名和密码。 问题答案: 您可以使用Proxy Auto auth插件实现相同的功能 使用以下扩展程序下载扩展程序 https://chrome.google.com/webstore/detail/get- crx/dijpllakibenlejkbajahncialkbdkjc/rel
我想使用casperjs/phantomjs自动填充一些web表单。为了调试我的casperjs脚本,我想使用(很棒的)Charles Web代理作为中间人SSL代理,但还没有弄清楚如何在casperjs/phantomjs中实现这一点。 我已经允许Charles在Firefox和远程服务器之间进行代理。浏览器和远程服务器都接受SSL证书,Charles正确解码HTTPS数据包,以便我可以看到浏览
下面是错误和超时异常。 输入代码: 调试SMTP:正在尝试连接到主机“SMTP.gmail.com”,端口587,isSSL true Exceptioninthread“main”java。lang.RuntimeException:com。太阳邮政util。MailConnectException:无法连接到主机,端口:smtp。gmail。com,587;超时-1。
问题内容: 我面临着Java6 / 8的奇怪行为。我尝试通过需要基本用户身份验证的代理进行隧道传输。通过标准的Java身份验证器执行此操作。如果我尝试访问https网址作为第一个网址,则会引发异常: java.io.IOException:无法通过代理隧道。代理返回“需要HTTP / 1.1 407代理身份验证” 但是,如果我先访问http URL,然后再访问https URL,则https访问正
邮局协议(POP)是本地电子邮件客户端用于通过TCP/IP连接从远程服务器检索电子邮件的应用程序层Internet标准协议。 POP支持访问远程邮箱的简单下载和删除要求。 POP3服务器侦听已知端口110。 软件包com.sun.mail.pop3是JavaMail API的POP3协议提供程序,提供对POP3消息存储的访问。 下表列出了此包中的类: 名称 描述 POP3Folder POP3文件