解析通过电子邮件发送的命令

时间:2012-10-15 19:39:20

标签: java email

我真的不确定我应该在哪里发布这个,但如果这是错误的地方,有人可以指导我在哪里可以得到答案吗?我希望能够将命令发送到我的电子邮件地址,并在发送消息时解析并执行命令。即我发送了一封电子邮件,其中包含:

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

我想配置我的程序以识别新电子邮件何时来自发送的地址,打开它,编译它(在这种情况下编译java)然后在运行该程序的机器上执行它。  我怎样才能弄清楚如何做到这一点?任何帮助都会很精彩,谢谢!

编辑:或者第一步可能是如何识别从地址收到的电子邮件?在Java中,我怎么能这样做:识别收到一封电子邮件并向屏幕输出一些内容以提醒事实。

3 个答案:

答案 0 :(得分:2)

这将是一个非常糟糕的主意。盲目地接受来自不受信任来源的电子邮件,编译它并执行它是一个巨大的安全漏洞。

答案 1 :(得分:1)

但如果您想这样做,请查看套接字编程,因为您需要连接到您的电子邮件提供商(如果他允许终端登录)

答案 2 :(得分:1)

有几个部分需要考虑:

安全

正如其他人所说,这里有安全风险需要考虑。如果这让您担心(并且它应该!),您可能需要考虑以下某些事项:

  • 在查看电子邮件之前,对这些“命令”电子邮件进行数字签名,然后验证该签名
    • PGP是此
    • 的热门选择
  • 在“沙盒”环境中运行您的程序(读取电子邮件),例如chroot'或jail
  • 只运行一组非常有限的命令 - 也许只是你发明的命令。

获取邮件

如果你仍然想这样做,考虑到安全问题,你需要程序来阅读邮件。

您可能希望使用IMAP或POP。

<强>解析

收到邮件后,您需要解析内容。 如果你只是发送代码,你可以直接编译它。 您还可以将代码作为附件发送,并使用某种MIME类型来识别它。这样你仍然可以发送一个“正常”的电子邮件(可能有关于此代码的用途的评论),但是你的程序将能够干净地分离代码。

<强>响应

您将如何回复结果?或者你在乎吗?

您可能希望发送回复电子邮件(使用SMTP)或更新网页。一个网页很好,因为如果你在本地运行Web服务器,你可以直接写一个文件。

<强>实施例

  • 标准的“确认电子邮件”系统与您描述的内容有很多相似之处。有人向自动化系统发送电子邮件,它会读取它,进行一些处理并回复。搜索这些系统,我相信你会开始使用。

  • 我创建了Exquisite Corpse Emailer项目,该项目完成了您描述的大部分内容(但在Perl中)。它只接受一小组有限的命令,但它会侦听IMAP上的电子邮件地址,解析文本,更新数据库等等。