2011-04-18 26 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