这个项目是一个作业邮件收集脚本,用于处理某课程学生通过邮件提交的作业。
-
创建一个 [
config.yaml] 配置文件,参考 [config.example.yaml] 文件。在配置文件中,你需要指定以下参数:- [
course_name]: 课程名称 - [
assignment_name]: 作业名称 - [
email_dir]: 存放邮件的目录 - [
output_dir]: 输出目录 - [
processed_log_path]: 处理过的邮件的日志文件路径 - [
roster_config]: 学生名单文件设置- [
path]:学生名单文件路径 - [
student_id_column]: 学号所在列的(Excel列的字母表示) - [
name_column]: 学生姓名所在的列 - [
start_row]: 点名册开始读取的行号
- [
例如,假设学生名单在
"data/点名册.xlsx",第一个学生的学号在B3单元格,姓名在C3,则- [
roster_config]: "data/点名册.xlsx"- [
student_id_column]: 'B' - [
name_column]: 'C' - [
start_row]: 3
- [
- [
-
通过邮箱下载所有学生某次作业的
.eml格式的作业邮件到[email_dir] -
运行 [
main.py] 文件来处理邮件。处理过程包括提取邮件中的附件,将邮件存档,以及生成处理报告
- 读取学生名单里的学号、姓名信息,在邮件的主题、附件文件名里匹配,如果同时匹配到了对应学生的两个信息,则将该邮件视为该学生此次提交的作业,并把该邮件移动到输出目录[
output_dir]下的[邮件存档]文件夹里,并将邮件按照[课程名称 - 作业名称 - 学号 - 姓名]的格式重命名 - 下载该邮件的附件并存到[
output_dir]下的[附件]文件夹里,按照[课程名称 - 作业名称 - 学号 - 姓名]的格式创建文件夹,把该学生的所有附件下载到该文件夹里 - 把处理得到的信息存入日志文件[
processed_log_path],包括所有下载附件的路径 - 生成一份[课程名称 - 作业名称 - 提交情况.xlsx]根据学生名单信息,增加名为“是否提交作业”的列,并列出作业邮件路径和附件路径
你可以运行 [tests/test_email_processor.py] 文件来进行单元测试。
- 请确保邮件目录和输出目录存在,否则程序将无法运行。
- 请确保邮件文件是
.eml格式。 - 请确保学生名单文件是
.xlsx格式,并且包含学生的姓名和学号的列。