2011-02-27 82 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