2016-03-29 85 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