想要根据用户名和主题自动处理电子邮件附件

时间:2010-08-23 01:52:50

标签: email email-attachments mail-server email-parsing email-processing

我正在寻求有关设置电子邮件网关的建议,以便学生可以通过电子邮件向我发送作业,电子邮件将自动处理。

例如,如果studenta@univ.edu通过电子邮件向我发送“CS208 hw1”主题,我会在学生参加CS208的学生列表中交叉检查学生,然后将所有附加文件转储到该学生的hw1中文件夹并通过电子邮件回复,说明收到的文件和时间。如果学生的电子邮件以某种方式格式不正确,例如不良主题或文件丢失,该服务将发送相应的电子邮件。

我可以对可以配置为电子邮件服务器的校园Linux机器进行管理访问。

Offhand我正在考虑使用fetchmail和cron作业来一致地读取指定用户的电子邮件并使用某种脚本执行相应的响应。这听起来像是一个好方法吗?我会欢迎更好的想法吗?

3 个答案:

答案 0 :(得分:2)

就个人而言,我会为一个带有上传对话框的页面提供root权限,也可以列出当前文件和FTP服务器。电子邮件的问题是,直到服务器无法通过的传输,因为邮件在途中被其他服务器处理而不是您自己的服务器。邮件可能在途中丢失或更改,并非所有服务器都可能接受特定大小或类型的附件。虽然这个想法非常好,但我认为它会产生一个不是最优的解决方案,比如提到的页面或ftp服务器。

修改

我宁愿选择msw的方式。版本控制系统可以为您节省很多麻烦和问题。 * tips hat to msw*

答案 1 :(得分:2)

我希望在实践中,你所规定的任何规则都会有更多的例外,而不是符合要求的邮件。你会为自己买手工修理和“电脑吃我的功课”的主张。

由于这是一个CS 200级别的类,因此要求他们使用某些版本控制系统,并且使用VCS强加的刚性结构来节省解析自由格式电子邮件的麻烦。您的学生也将受益于该要求。如果我10岁的孩子能够理解Google Docs中自动修订控制的优点,我猜你的学生可以处理Mercurial或git甚至(喘息!)Subversion。

添加以回应评论

是的,但是对于Mercurial(并且可能是git),“存储库”对于“目录”来说是一个奇特的词,并不是旧的VCS模型可能引导您期待的重量级DBMSy的东西。

作为一名学生,我希望如何处理假设作业:

studenta@dorm$ hg clone https://Rich.univ.edu/studenta/cs208
$ cd cs208 ; broswer ./hw1.html
$ mkdir hw1 ; cd hw1 ; make my work files 
$ hg add * ; hg commit -m "perfect the first time!" # updates locally only
$ make lots of bug fixes
$ hg commit -m "okay really done now"
$ hg push 
# sleep, party, go to class with hangover
$ hg pull
$ browse hw2.html ; mkdir hw2 
...

你所在的学生名册中的作业仅仅是为了示范。由于您“拥有”Rich.unix.edu机器,因此它们的推动变得具有权威性。你

  1. 在Rich.univ.edu上为名册中的每个学生写一个(小)脚本到hg init $student/cs208
  2. 了解HTTPS或SSH在您的环境中是否运行最佳
  3. 添加评论 - 如果需要 - 添加到他们下一次学习的学生档案中
  4. 拥有所有互动的管理,方便,记录的记录。
  5. 学生在被接受的那一刻得到肯定的反馈
  6. 最后,如果存储库服务器关闭,他们可以

    $ hg export tip | mail -s "server down; assignment done" Rich@univ.edu
    

    你还有一个带时间戳,消化的提交版本,它有一个严格的格式你可以为它们提交,或者更好的是:

      “Rich博士,服务器坏了!”   “但   你通过电子邮件发给我一个出口,   是吗?“
      “当然,先生。”   “好吧,只是   当机器重新启动时我会推动   已经有证据证明你已经完成了   按时完成。“
      “哦,哎呀,Rich博士,你是   溶胀!“

答案 2 :(得分:0)

如果您有Web邮件界面,那么iMacros for Firefox可以是一个很好的自动化解决方案。您可以使用built-in Javascript进行更复杂的if / then决策: