Хотите автоматически обрабатывать вложения электронной почты на основе имени пользователя и темы

Мне нужен совет по настройке шлюза электронной почты, чтобы студенты могли отправить мне домашнее задание по электронной почте, и письмо будет обработано автоматически.

Например, если studenta@univ.edu отправит мне электронное письмо с темой "CS208 hw1", я проведу перекрестную проверку студентов в списке студентов, принимающих CS208, затем возьму все прикрепленные файлы, сохраню их в папке hw1 этого студента и отвечу с электронным письмом с указанием того, какие файлы были получены и когда. Если электронная почта учащегося была искажена каким-либо образом, например, плохой предмет или отсутствующие файлы, служба отправит соответствующее электронное письмо.

У меня есть административный доступ к машине Linux в кампусе, которую можно настроить как сервер электронной почты.

Я подумал об использовании fetchmail и cron для постоянного чтения электронной почты назначенного пользователя и выполнения соответствующих ответов с помощью какого-то сценария. Это звучит как хороший путь? Я бы приветствовал лучшие идеи?

3 ответа

Решение

Я ожидаю, что на практике будет гораздо больше исключений из любых правил, которые вы предписываете, чем будет соответствующая почта, которая обрабатывается должным образом. Вы купите себе головную боль ручных исправлений и претензий "компьютер съел мою домашнюю работу".

Поскольку это класс уровня CS 200, потребуйте от них использования некоторой системы контроля версий и избавьте себя от необходимости разбирать электронную почту в свободном формате с жесткой структурой, которую навязывает VCS. Ваши студенты тоже получат пользу от этого требования. Если бы мой 10-летний мог оценить достоинства автоматического контроля версий в Документах Google, я предполагаю, что ваши ученики могут работать с Mercurial, git или даже (задыхаться!) Subversion.

добавлено в ответ на комментарий

Да, но с Mercurial (и, по-видимому, git) "репозиторий" - это причудливое слово для "каталога", а не тяжелая СУБД, что могло бы заставить вас ожидать более старые модели VCS.

Вот как я, будучи студентом, мог бы работать над гипотетическим заданием:

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. Написать (крошечный) сценарий hg init $student/cs208 на Rich.univ.edu для каждого студента в списке.
  2. Определите, работает ли HTTPS или SSH лучше всего в вашей среде
  3. Добавьте комментарий - при желании - к файлам учащегося, которые они соберут в следующий раз
  4. Имейте управляемую, удобную, зарегистрированную запись всех взаимодействий.
  5. Студенты получают положительную обратную связь в тот момент, когда она была принята

Наконец, если сервер хранилища не работает, они могут

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

И у вас все еще будет временная, переваренная версия их представления, которая имеет жесткий формат, который вы могли бы зафиксировать для них, или еще лучше:

"Доктор Рич, сервер не работает!!!"
"Но вы отправили мне экспорт по электронной почте, да?"
"Конечно, сэр."
"Ну, просто нажмите, когда машина снова включится, у меня уже есть доказательства того, что вы выполнили ее вовремя".
"О боже, доктор Рич, ты молодец!"

Лично я бы поддерживал страницу с диалоговым окном загрузки, а также возможностью перечислять текущие файлы и, возможно, FTP-сервер. Проблема с электронной почтой заключается в том, что передача до тех пор, пока сервер находится вне вашей досягаемости, поскольку почта обрабатывается другими серверами, а не вашими в пути. Почта может быть потеряна или изменена в пути, не все серверы могут принимать вложения определенного размера или типа. Хотя идея довольно хорошая, я думаю, что она даст менее оптимальное решение, чем другие, такие как упомянутая страница или FTP-сервер.

редактировать

Я бы предпочел путь Мсв. Система контроля версий избавит вас от многих хлопот и проблем. * tips hat to msw*

Если у вас есть веб-интерфейс почты, то iMacros для Firefox может стать хорошим решением для автоматизации. Вы можете использовать встроенный Javascript для более сложных решений if/then:

Другие вопросы по тегам