0

我正在尝试为从 IMAP 邮件服务器同步的电子邮件添加逻辑挂钩。最后,我想在新邮件同步时触发一个钩子,并检查发件人的邮件是否保存在其中一个帐户中。

问题是同步邮件没有被保存(至少没有在 InboundMail 或电子邮件模块中),因此 after/before_save 不会触发。

这是我的钩子logic_hooks.php

$hook_array['after_save'][] = Array(1, 'Create Lead', 'custom/modules/InboundEmail/LeadLogicHook.php', 'LeadLogicHook', 'handleLead');

它不适用于 InboundEmail 和电子邮件模块。

LeadLogicHook

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

class LeadLogicHook 
{
    function handleLead($bean, $event, $arguments) 
    {
        _ppl("Test");
    }
}

这甚至可以通过逻辑钩子实现吗?

编辑:添加了一些代码

4

3 回答 3

1

不需要逻辑挂钩或任何其他自定义代码。Sugar/SuiteCRM 使用调度程序作业从 IMAP 服务器获取电子邮件。您可以检查获取电子邮件的调度程序作业功能(function::pollMonitoredInboxes)。包含用于获取电子邮件的代码。追溯代码,你会找到你想要的一切。

于 2017-09-25T06:08:38.630 回答
1

我认为这是可能的,如果 after/before_save 没有触发然后尝试一些类似的逻辑钩子。以下是一些我认为可以提供帮助的逻辑钩子。

  • before_retrieve
  • after_retrieve
  • before_restore
  • after_restore
  • server_roundtrip
  • after_session_start
  • after_entry_point

如果您需要更多详细信息,请发表评论,例如如何使用逻辑挂钩等

于 2017-09-22T11:18:09.240 回答
1

你用的是什么版本的糖?

例如,您可以在 E-mail 模块中生成一个 after_save 挂钩,而不是inboundEmail

会是这样的:

$hook_array ['after_save'] [] = Array (1,'Create Lead','custom/modules/Emails/LeadLogicHook.php','LeadLogicHook','handleLead');

执行此操作并查看电子邮件是否触发!另一种可能性是使用after_relationship_add,因为通常,电子邮件与某些潜在客户、帐户或联系人相关联。尝试在您的电子邮件关联的模块中创建一个钩子并从那里生成操作

最后一种可能性(我不建议这样做)是在您的数据库中创建一个触发器,以便在数据进入表时执行检查并采取一些措施

于 2017-09-22T23:43:39.930 回答