我正在创建一个Java Applet,可以在线用于公司网站。
applet本质上是一个动态的在线表单,它会提示用户输入产品的某些重要订单详细信息,然后将电子邮件发送到位于公司维护的收件箱中的地址。我在本地测试环境中创建了applet,但是当我将它移动到测试位置(位于与最终运行的实际applet相同的Web服务器上)时,我收到以下错误(来自IE中的Java控制台) :
DEBUG: can't get java.home: java.security.AccessControlException:
access denied (java.util.PropertyPermission java.home read)
问题(我在这个问题上做过的一些研究)是公司的网络服务器(运行网站)和邮件服务器(这是电子邮件的最终目的地,也是我的SMTP服务器)尝试使用JavaMail API以发送电子邮件)位于不同的IP地址(尽管完全位于同一网络上)。因此,由于此applet不受信任(且未签名),因此Applet没有访问SMTP服务的安全权限。
我想过几种方法来解决这个问题,但我真的很感激这方面的一些建议,我是否应该使用带有JavaMail API的Java Servlet来允许表单发送电子邮件?或者我应该尝试自己签署applet,从而允许applet访问公司的SMTP服务器?
对此事的任何意见/建议都会有所帮助,非常感谢。
答案 0 :(得分:1)
现在标准做法是只接受来自被认为是真正邮件服务器的机器的邮件,以避免接收垃圾邮件。即使您的邮件服务器现在没有这样设置,也可能是将来。所以要面向未来并使用servlet!
(使用servlet的另一个原因是防火墙,但这可能不适用于你。)