SuiteCRM 入站邮件自动创建CASE的自定义条件设置方法
SuiteCRM 入站邮件自动创建Case 自定义规则实现指引
1. 入站邮件触发自动创建CASE的代码位置
默认处理逻辑位于核心文件 modules/InboundEmail/InboundEmail.php 中,核心调用方法为 handleCreateCase(),系统拉取到符合规则的入站邮件时,会触发该方法执行Case创建流程。
提示:不建议直接修改核心文件,避免后续版本升级覆盖自定义代码,推荐通过逻辑钩子(Logic Hook)的方式注入判断规则
2. 自定义判断逻辑实现步骤
你需要在Case创建前的节点拦截请求,判断邮件主题前缀,匹配规则时终止创建即可,具体操作如下:
- 第一步:注册逻辑钩子
如文件custom/modules/Cases/logic_hooks.php不存在则新建,写入以下内容:<?php $hook_version = 1; $hook_array['before_save'][] = array( 1, '拦截回复/转发邮件自动创建Case', 'custom/modules/Cases/CustomCaseHooks.php', 'CustomCaseHooks', 'blockReplyForwardCase' ); - 第二步:编写判断逻辑
新建custom/modules/Cases/CustomCaseHooks.php文件,写入以下代码:<?php class CustomCaseHooks { public function blockReplyForwardCase($bean, $event, $arguments) { // 仅拦截入站邮件触发的新建Case场景 if (!empty($bean->fetched_row) || empty($_REQUEST['inbound_email_id'])) { return; } // 格式化主题后做前缀匹配 $subject = trim(strtoupper($bean->name)); // PHP8.0及以上版本用str_starts_with方法 if (str_starts_with($subject, '[FW:]') || str_starts_with($subject, '[RE]')) { $bean->mark_deleted($bean->id); die(); } // PHP8.0以下版本替换上面的if判断为以下代码: // if (substr($subject, 0, 5) === '[FW:]' || substr($subject, 0, 4) === '[RE]') { // $bean->mark_deleted($bean->id); // die(); // } } } - 第三步:生效配置
进入SuiteCRM后台执行「快速修复和重建」操作即可。
内容的提问来源于stack exchange,提问作者sandeep Sandy
相关产品推荐
相关产品推荐

