2011-04-18 68 views
1

我正在创建一个Java Applet,以便在公司网站上进行在线使用。Java Applet电子邮件问题

小应用程序本质上是一个动态在线表单,它将提示用户输入产品的某些重要订单详细信息,然后将电子邮件发送到位于公司维护的收件箱中的地址。我在本地测试环境中创建了applet,但是当我将它移动到测试位置(位于与真实applet最终将运行的同一webserver上)时,出现以下错误(从IE中的Java控制台) :

DEBUG: can't get java.home: java.security.AccessControlException: 
access denied (java.util.PropertyPermission java.home read) 

(从一些研究,我关于这个问题进行的)问题是,该公司的网络服务器(运行的网站)和邮件服务器(这是电子邮件的最终目的地,也是我试图使用JavaMail API来发送电子邮件的SMTP服务器)位于不同的IP地址(尽管位于同一网络中)。因此,由于此applet不可信(和未签名),Applet不具有访问SMTP服务的安全权限。

我想过一些解决这个问题的方法,但是我真的很感谢关于此问题的一些建议,我是否应该使用Java Servlet和JavaMail API来允许表单发送电子邮件?或者我应该自己尝试签署小程序,并允许小程序访问公司的SMTP服务器?

对此事的任何意见/建议将有所帮助,非常感谢。

+1

我不会依赖于来自客户端的SMTP。你永远不知道哪些端口可以被客户端的防火墙阻止。 – 2011-04-18 20:10:15

+0

你不想让表单发送电子邮件。如果小程序在用户本地计算机上运行,​​那么他们可以逆向设计通过系统发送电子邮件的能力。只需在您的应用程序上签名,即可解决问题。 – Daisetsu 2011-04-18 21:40:06

+0

@Daisetsu我不明白你为什么认为签名应用程序会阻止它被逆向工程。 (另外,安全性出人意料地难以正确对待,因此“仅仅”签署应用程序可能不是最好的主意(同样,信任已签名的应用程序)。) – 2011-04-19 01:00:37

回答

1

现在的标准做法是只接受来自被认为是真正的邮件服务器的机器的邮件,试图避免接收垃圾邮件。即使你的邮件服务器现在不是这样设置的,也可能在将来。所以,要有前瞻性并使用servlet!

(使用servlet的另一个原因是防火墙,但这可能不适用于您。)

+0

感谢您的回复,我已经与我的公司的一些人讨论过这个问题,我想我将使用一个servlet。 – 2011-04-19 15:33:05