2011-02-27 84 views
3

我已經使用Java郵件API發送電子郵件並接收它們。 現在我正在做這個項目的地方有一個代理服務器。發送電子郵件從java通過代理

我可以通過代理服務器知道如何通過Java發送電子郵件嗎?

+0

您需要更具體地說明您正在談論的是哪種代理服務器。 – 2011-02-27 04:00:24

回答

1

See the FAQ Here.

的JavaMail目前不支持通過Web代理服務器訪問郵件服務器。使用代理服務器的主要原因之一是允許來自公司網絡的HTTP請求通過企業防火牆。防火牆通常會阻止對Internet的大部分訪問,但會允許來自代理服務器的請求通過。此外,公司網絡內的郵件服務器將執行類似的電子郵件功能,通過SMTP接收郵件並將它們轉發到Internet上的最終目的地,並接收傳入郵件並將郵件發送到相應的內部郵件服務器。

如果您的代理服務器支持SOCKS V4或V5協議(http://www.socks.nec.com/aboutsocks.htmlRFC1928),並允許匿名連接,可以告訴Java運行時指示所有TCP socket連接到SOCKS服務器。有關socksProxyHost和socksProxyPort屬性的最新文檔,請參閱Networking Properties指南。這些是系統級屬性,而不是JavaMail會話屬性。可以在調用應用程序時從命令行設置它們,例如:java -DsocksProxyHost=myproxy ...。該工具可用於將SMTP,IMAP和POP3通信從JavaMail指向SOCKS代理服務器。請注意,設置這些屬性會將所有TCP套接字指向SOCKS代理,這可能會對應用程序的其他方面產生負面影響。

沒有這樣的SOCKS服務器,如果你想用JavaMail直接訪問防火牆外的郵件服務器,防火牆需要配置爲允許這樣的訪問。 JavaMail不支持通過HTTP代理Web服務器進行訪問。

+0

請注意FAQ已更新:「如果您的代理服務器支持SOCKS V4或V5協議(http://www.socks.nec.com/aboutsocks.html,RFC1928)並允許匿名連接,並且您使用的是JDK 1.5或更高版本以及JavaMail 1.4.5或更新版本,您可以通過設置com.un的javadoc中所述的「mail.smtp.socks.host」屬性,以每個會話,每個協議爲基礎配置SOCKS代理.mail.smtp包「。 – svaor 2012-09-21 05:05:30