-1

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

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

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

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

4

3 回答 3

2

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

于 2012-10-15T19:43:52.193 回答
1

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

于 2012-10-15T19:44:56.920 回答
1

这有几个部分需要考虑:

安全

正如其他人提到的,这里有需要考虑的安全风险。如果这让您担心(而且应该!),您可能需要考虑以下一些事项:

  • 对这些“命令”电子邮件进行数字签名,并在查看电子邮件之前验证该签名
    • PGP是一个受欢迎的选择
  • 在“沙盒”环境中运行您的程序(读取电子邮件),例如被chroot或在监狱中
  • 只运行一组非常有限的命令——也许只是你发明的。

获取邮件

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

您可能希望为此使用 IMAP 或 POP。

解析

收到邮件后,您需要解析内容。如果您只发送代码,您可以直接编译它。您还可以将代码作为具有特定 MIME 类型的附件发送以识别它。这样,您仍然可以发送“普通”电子邮件(可能带有有关此代码用途的评论),但您的程序将能够干净地分离出代码。

回应

你将如何反馈结果?还是你在乎?

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

例子

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

  • 我创建了Exquisite Corpse Emailer项目,它完成了您所描述的大部分工作(但在 Perl 中)。它只接受极少数有限的命令,但它会在 IMAP 上收听电子邮件地址、解析文本、更新数据库等。

于 2012-10-15T19:49:37.440 回答