2012-10-15 90 views
-1

我真的不確定應該在哪裏發佈此信息,但如果這是錯誤的地方,有人可以指示我在哪裏可以得到答案?我希望能夠將命令發送到我的電子郵件地址,並在發送郵件時解析並執行命令。即我發送一封電子郵件,它包含此:通過電子郵件發送的解析命令

public class sentThruEmail { 
     public static void main(String[] args) { 
      System.out.println("Hello"); 
     } 
    } 

我希望配置我的程序時,一個新的電子郵件來自一個發送地址,打開它,編譯它承認(在這種情況下編譯Java)和然後在程序運行的機器上執行它。 我該如何解決如何做到這一點?任何幫助將是美好的,謝謝!

編輯:或者,也許第一步是如何識別從地址收到的電子郵件?在Java中,我怎麼能這樣做:認識到收到了一封電子郵件並輸出了一些東西到屏幕上以提醒事實。

回答

1

有這幾個部分來考慮:

安全

正如其他人提到的那樣,這裏需要考慮安全風險。如果讓你擔心(它應該!),你可能要考慮以下一些:

  • 數字簽名,這些「命令」郵件,看電子郵件之前驗證簽名
  • 運行程序中的一個流行的選擇(它讀取電子郵件)在「沙箱」的環境中,如被chroot「版或在jail
  • 只運行一組非常有限的命令 - 也許只是你發明的。

獲取郵件

如果您仍然想這樣做,考慮到安全問題,你需要你的程序來讀取郵件。

您可能想要爲此使用IMAP或POP。

解析

一旦你的郵件,你需要解析的內容。 如果你只是發送代碼,你可以直接編譯它。 您也可以將代碼作爲附件與特定的MIME類型一起發送以標識它。這樣,你仍然可以發送一個'正常'的電子郵件(也許有關於這個代碼的用途的評論),但是你的程序將能夠清楚地分離出代碼。

響應

你將如何溝通結果回來?或者你在意嗎?

您可能希望發送回覆電子郵件(使用SMTP)或更新網頁。一個網頁是很好的,因爲如果你在本地運行網絡服務器,你可以直接寫一個文件。

例子

  • 標準的「確認郵件」系統有很多相似性,以你的描述。有人發送電子郵件到自動化系統,它讀取它,做一些處理,然後回覆。搜索這些系統,我相信你會開始。

  • 我創建了Exquisite Corpse Emailer項目,它完成了您所描述的許多功能(但在Perl中)。它只接受一小組有限的命令,但它在IMAP上收聽電子郵件地址,解析文本,更新數據庫結果等。

2

這將是一個非常糟糕的主意。盲目接受來自不可信來源的電子郵件,編譯它並執行它是一個巨大的安全漏洞。

+0

請問,我不是在專業人士水平。我(顯然)是一個業餘愛好者。當我是發送電子郵件的人時,我只想知道如何去做這件事。它會解析,所以我想我會依賴於gmail的安全性。 – eatonphil

1

但是,如果你想這樣做,看看socket編程,因爲你將需要連接到您的電子郵件提供商(如果他允許終端登錄)

+0

謝謝你,正如我上面所說的,我只是出於陰謀而做這件事。這不是出於「商業」的緣故。那麼像桌面gmail這樣的程序如何不會帶來安全風險? (至少在我的編輯方面,它會做同樣的事情,當你收到新郵件時會提醒你。) – eatonphil