2016-03-29 79 views
0

我发现javamail只支持袜子。有没有我可以用来支持http代理的解决方案?如何让javamail支持http代理

public class MailConnectionTest { 
public static void main(String args[]) throws MessagingException { 
    Properties props = MailConnectionTest.getProperties(); 
    Session session = Session.getDefaultInstance(props, null); 
    String protocol = "pop3"; 
    String host = "pop.163.com"; 
    String username = "email username"; 
    String password = "1Qaz2wsx3edc&"; 
    Store store = session.getStore(protocol); 
    store.connect(host, username, password); 
    System.out.println("Success"); 
} 
private static Properties getProperties() { 
Properties props = System.getProperties(); 
props.put("mail.debug", "false"); 
// Proxy 
props.put("proxySet", "true"); 
props.put("http.proxyHost", "proxyAdderss"); 
props.put("http.proxyPort", "8080"); 
return props; 
} 
} 
+2

您的问题没有意义。 HTTP代理用于HTTP。 JavaMail使用SMTP和POP3和IMAP。不是HTTP。 – EJP

+0

这就是我的观点。你的意思是没有办法使用java代理服务器。那么,javamial可以使用socks代理吗?那么如何使用? – Cain

+0

你为什么要这样? SMTP应该很好,对吧? –

回答

0

见的JavaMail FAQ:

...如果没有这样的SOCKS服务器,如果你想使用JavaMail来访问邮件服务器在防火墙之外间接,您可能可以使用诸如Corkscrewconnect之类的程序来通过HTTP代理服务器对TCP连接进行隧道传输。 JavaMail不支持通过HTTP代理Web服务器直接访问。

+0

谢谢。我明白你的意思。我需要一个程序或工具来通过HTTP代理服务器建立连接。那么,我怎样才能将我的Java代码与Corkscrew整合起来,或者将它们作为单个Java类来连接?我的意思是说有一个我可以用来简化的jar。 – Cain

+0

否。设置其中一个其他程序后,需要将JavaMail配置为使用它们作为SOCKS代理服务器。 –

+0

我画了一个流。 JavaMail - > SOCKS代理 - > Corkscrew或连接 - > http代理服务器。这样对吗?所以Corkscrew或连接就像一个可以将袜子代理转换为http代理的适配器? – Cain