2012-10-15 53 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