OpenProject 如何配置 IMAP 让邮件自动创建和更新工作包?

发布时间:2026/9/15 22:38:59
OpenProject 如何配置 IMAP 让邮件自动创建和更新工作包? OpenProject 如何配置 IMAP 让邮件自动创建和更新工作包【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject这篇文章解决的是你希望团队成员通过发送或回复邮件就能在 OpenProject 中自动创建工作包work package、添加评论、修改状态等属性而不用每个人都打开网页操作。OpenProject 通过一个从 IMAP 邮箱拉取邮件的 rake 任务redmine:email:receive_imap实现该能力它读取指定邮箱中的邮件解析正文里的属性行然后创建工作包、更新工作包或在论坛中回复。适用环境包括两种官方部署方式packaged软件包安装和 Docker 安装如果你使用的是 Enterprise 云版本官方文档说明相关设置已预先配置好可直接跳到“邮件格式”部分。拉取邮件的工作机制收件由 rake 任务完成该任务可以手动执行也可以由定时任务自动执行Packaged 安装没有内置的定时循环需要你自己用 Cron job 之类的方式周期性执行这条 rake 任务官方文档明确给出“executed manually or automatically, e.g. with the help of a Cron job”的说明并以上述方式演示。Docker 安装内置了一个“类 cron”守护进程源码见 docker/prod/cron它在一个while true循环中每隔IMAP_CHECK_INTERVAL秒默认 600 秒即 10 分钟执行一次redmine:email:receive_imap无需额外配置定时任务只需设置对应的环境变量。也就是说Docker 部署下邮件处理是“准实时”的默认每 10 分钟一批packaged 部署下处理频率取决于你自己配置的 cron 间隔。Packaged 安装手动执行 IMAP 拉取任务在 官方文档 中IMAP 方式对应的命令是openproject run bundle exec rake redmine:email:receive_imap hostimap.gmail.com usernametest_user passwordpassword port993 ssltrue ssl_verificationtrue allow_overridetype,project projecttest_project其中host、username、password、port要替换成你的邮箱服务器地址、账号、密码和端口ssl/ssl_verification控制是否使用 SSL 连接及是否校验证书projecttest_project指定邮件默认写入的目标项目使用项目的 identifierallow_overridetype,project表示允许邮件正文中的属性覆盖type和project这两个在命令行已固定的值。这条命令是文档给出的完整示例test_user、password、test_project都是示例值执行前必须替换为你自己的值。如果你使用的是 Gmail 且希望通过 Gmail API比 IMAP 密码方式更安全拉取邮件文档提供了另一条命令openproject run bundle exec rake redmine:email:receive_gmail credentials/path/to/credentials.json user_idtest_user queryis:unread label:openproject allow_overridetype,project这是一条可选路径前提是在 Google Cloud 控制台完成服务账号创建、密钥生成和域范围委托scope 为https://www.googleapis.com/auth/gmail.modify因为该权限用于把邮件标记为已读文档对 JSON 密钥文件明确要求保密。具体流程见 官方文档 的 Gmail API 小节。Docker 安装设置 IMAP 环境变量Docker 部署不需要执行上面的命令而是通过环境变量告诉内置 cron 守护进程如何连接 IMAP。文档要求设置的变量IMAP_SSLActionMailer 的 IMAP 连接是否需要隐式 TLS/SSL默认trueIMAP_SSL_VERIFICATION是否校验 SSL 证书默认trueIMAP_PORT、IMAP_HOSTIMAP 服务器的端口与地址IMAP_USERNAME、IMAP_PASSWORD邮箱账号与密码可选变量IMAP_CHECK_INTERVAL检查新邮件的间隔秒默认 600IMAP_ALLOW_OVERRIDE允许被邮件覆盖的属性列表逗号分隔其余行为参数与 rake 任务的命令行参数一一对应文档给出的完整对照表摘取常用项keyDocker 环境变量说明hostIMAP_HOST邮件服务器地址usernameIMAP_USERNAME连接邮件服务器使用的用户名passwordIMAP_PASSWORD用户密码portIMAP_PORT连接端口sslIMAP_SSL/IMAP_SSL_VERIFICATION是否使用 SSL 连接folderIMAP_FOLDER从中拉取邮件的文件夹默认INBOXmove_on_successIMAP_MOVE_ON_SUCCESS成功解析的邮件移入的文件夹例如INBOX.success而不是直接删除move_on_failureIMAP_MOVE_ON_FAILURE被忽略的邮件移入的文件夹例如INBOX.failed用于改变工作包处理行为的参数keyDocker 环境变量说明projectIMAP_ATTR_PROJECT目标项目的 identifiercategoryIMAP_ATTR_CATEGORY目标分类名priorityIMAP_ATTR_PRIORITY目标优先级名statusIMAP_ATTR_STATUS目标状态名target_versionsIMAP_ATTR_TARGET_VERSIONS目标版本多个用逗号分隔多于一个需要“多版本”功能typeIMAP_ATTR_TYPE目标类型名assigned_toIMAP_ATTR_ASSIGNED_TO负责人姓名unknown_userIMAP_UNKNOWN_USERignore默认忽略无匹配账号的邮件、accept按匿名用户接受、create创建用户账号no_permission_checkIMAP_NO_PERMISSION_CHECK设为1时跳过收件时的权限检查allow_overrideIMAP_ALLOW_OVERRIDE允许被邮件覆盖的属性逗号分隔注意文档中的两点约束要让匿名用户发邮件正常工作unknown_usercreate之外还必须同时设置IMAP_NO_PERMISSION_CHECK1。官方对“邮箱地址映射到用户”有明确警告该机制只做邮箱到账号的映射并不基于邮件做身份认证发件人地址可以被伪造因此不应依赖这种方式创建的工作包的真实性。Enterprise 云中邮件创建工作包只能由已注册的邮箱地址触发。邮件格式如何写邮件才能创建和更新工作包文档特别提示请使用邮件客户端的纯文本编辑器而不是 HTML 编辑器以免内容被误解例如项目名称。创建工作包向你会回复工作包通知的那个同一邮箱地址发一封新邮件。项目要么由配置预定义上面的project.../IMAP_ATTR_PROJECT要么必须在邮件开头声明。文档给出的示例主题写Fixing problems正文如下project: demo-project type: Task status: In Progress Im looking into the problems.这会创建一个新工作包主题取自邮件主题Fixing problems正文中被识别为属性键的行会被移除剩余内容成为工作包描述demo-project是项目的 identifier可以在项目设置页看到或者在项目页面时直接看浏览器地址栏。更新工作包收到工作包通知邮件后直接回复该邮件即可回复内容会作为评论添加到该工作包也可以在回复中修改属性。文档示例status: closed The issue is sorted then. Closing this.效果是给该工作包追加这条评论并把它置为已关闭。可用属性键创建和更新工作包时可用属性相同。键不区分大小写但键值区分大小写。每个属性可以用内部 Key 或属性名名称取决于系统默认语言或发件用户选定的语言。文档列出的完整清单KeyName (EN)说明示例projectProject设定项目使用项目 identifierproject:test_projectresponsibleAccountable设定负责账号使用用户邮箱或登录名responsible:userexample.orgassigned_toAssignee设定负责人使用用户邮箱或登录名assignee:test.nutzerexample.orgtypeType设定类型type:MilestoneversionVersion设定版本已弃用改用target_versionsversion:v4.1.0target_versionsTarget versions设定目标版本多个用逗号分隔多个需要“多版本”功能target_versions:v4.1.0, v4.2.0start_dateStart date设定开始日期start_date:2015-02-28due_dateDue date设定完成日期due_date:2015-02-28estimated_hoursEstimated hours设定预计工时使用数字estimated_hours:10.5remaining_hoursRemaining hours设定剩余工时使用数字remaining_hours:2.5statusStatus设定状态status:closedpriorityPriority设定优先级priority:HighcategoryCategory从项目分类中设定分类category:Testing自定义字段直接用其在浏览器中显示的字段名书写例如Custom field:new value。project属性比较特殊要么把project加入允许覆盖的列表allow_overrideproject,...才能在邮件中使用要么用projectidentifier将其固定。两者必居其一。其他规则发件人匹配发件地址必须匹配系统中已有账号邮件处理才会以该用户身份执行操作没有匹配账号时邮件会被拒绝。邮箱后缀OpenProject 默认会把accountdomain扩展搜索到accountsuffixdomain正则匹配 mail 列。若不需要该行为可运行bundle exec rails runner Setting.mail_suffix_separators 修改mail_suffix_separators设置。附件通过邮件创建或更新工作包时邮件附件会挂到相应工作包上。关注者通过邮件创建工作包时如果同时发给另一个邮箱地址To 或 BccOpenProject 会查找对应用户并将其加为关注者。结果验证与错误处理判断邮件是否被成功处理最直接的方式是使用move_on_success/move_on_failureDocker 下为IMAP_MOVE_ON_SUCCESS/IMAP_MOVE_ON_FAILURE把已处理邮件移到INBOX.success、INBOX.failed这类文件夹如果默认INBOX中的邮件按检查间隔从邮箱消失并出现在成功文件夹说明拉取和解析正常出现在失败文件夹说明邮件被忽略。出错时 OpenProject 会尝试向发件人回一封带错误详情的邮件但这封邮件只有在以下三个条件同时满足时才会发出入站邮件本身已被应用读取如果拉取环节就失败了自然无从回复对应用户在系统中是激活状态unknown_usercreate的场景同样适用配置项report_incoming_email_errors为true默认就是true。文档同时提醒错误详情经邮件返回可能泄露信息且发件人可伪造应妥善配置集成以控制影响。若不希望向发件人报告错误Packaged 安装运行openproject config:set OPENPROJECT_REPORT__INCOMING__EMAIL__ERRORSfalse并重启 openproject 服务Docker添加环境变量OPENPROJECT_REPORT__INCOMING__EMAIL__ERRORSfalse。另外管理端设置里可以指定一个截断行Truncate该行之后的邮件内容将不再被解析适合你回复 OpenProject 自动发出的通知邮件时——把截断行插在你想要执行的更新下方即可。限制发件人邮箱必须与系统账号匹配机制只做映射、不做认证不能防范发件人伪造多版本target_versions多个值依赖“多版本”功能开启unknown_usercreate等价于开放了类似自助注册的账号创建能力文档对此明确警示Docker 部署默认 10 分钟拉取一次处理不是瞬时的可用IMAP_CHECK_INTERVAL调整。更多参数如read_on_failure、max_emails等 Gmail API 参数与完整命令说明见 docs/installation-and-operations/configuration/incoming-emails/README.mdDocker 端 cron 循环逻辑见 docker/prod/cron。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考