如何让javamail支持http代理

时间:2016-03-29 07:30:46

标签: java javamail http-proxy

我发现javamail只支持socks。我可以使用任何解决方案来支持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;
}
}

4 个答案:

答案 0 :(得分:2)

根据Javamail API 1.6.2的最新版本,JavaMail支持通过Web代理服务器访问邮件服务器,并支持对代理服务器的身份验证。请在下面查看我的代码。

{{1}}

答案 1 :(得分:1)

javamail api 1.6支持Web服务器代理

设置这些属性

mail.protocol.proxy.host

mail.protocol.proxy.port

将smtp设置为

mail.smtp.proxy.host

mail.smtp.proxy.port

答案 2 :(得分:0)

请参阅JavaMail FAQ:

  

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

答案 3 :(得分:0)

该实现仅支持Web代理的基本身份验证。您可以在com.sun.mail.util.SocketFetcher中找到源代码。

由于javamail已经支持NTLM身份验证,因此不难为Web代理支持NTLM身份验证。