2017-09-22 5 views
0

J'essaie d'ajouter un crochet logique pour les e-mails synchronisés à partir du serveur de messagerie IMAP. En fin de compte, je veux déclencher un crochet lorsqu'un nouveau courrier est synchronisé et vérifier le courrier des expéditeurs si elle est enregistrée dans l'un des comptes. Le problème est que les mails synchronisés ne sont pas sauvegardés (du moins pas dans le module InboundMail ou Emails) donc l'after/before_save ne se déclenche pas.Logic Hook on Emails synchronisé à partir du serveur IMAP

Voici mon crochet logic_hooks.php:

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

Il ne fonctionne pas dans InboundEmail et module Email.

Et le LeadLogicHook:

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

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

Est-ce même possible avec des crochets logiques?

EDIT: ajout de code

Répondre

1

Pas besoin de crochet logique ni d'aucun autre code personnalisé. Sugar/SuiteCRM utilise un travail de planificateur pour récupérer le courrier électronique du serveur IMAP. Vous pouvez vérifier la fonction du travail du planificateur (function :: pollMonitoredInboxes) qui récupère les emails. Cela contient du code qui est utilisé pour la récupération de courrier électronique. suivre le code et vous trouverez tout ce que vous voulez.

2

Je pense qu'il est possible, si après/before_save ne peut pas déclencher ensuite essayer quelques crochets logiques similaires. Voici quelques crochets logiques qui, je pense, pourraient aider.

  • before_retrieve
  • after_retrieve
  • before_restore
  • après_restauration
  • server_roundtrip
  • after_session_start
  • after_entry_point

Commentaire si vous voulez plus de détails, comme comment utiliser des crochets logiques e.t.c.

+0

Désolé j'étais un peu non spécifique sur quand je veux déclencher mon action. J'ai besoin de déclencher mon crochet quand un nouveau courrier est synchronisé à partir du serveur IMAP. donc je ne peux pas vraiment utiliser les crochets que vous avez suggérés. – Velrest

2

Quelle version de sucre utilisez-vous?

Vous pouvez, par exemple, générer un crochet after_save dans le module E-mail au lieu de inboundEmail

Ce serait comme ceci:

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

Pour ce faire, et voir si les feux de courrier électronique! Une autre possibilité consisterait à utiliser l'attribut after_relationship_add, car généralement, l'e-mail est associé à une piste, un compte ou un contact. essayer de créer un crochet dans le module auquel votre email est associé et générer l'opération à partir de là

une dernière possibilité (je ne le recommande pas) est de créer un déclencheur dans votre base de données lorsque les données entrent dans la table, Effectuer la vérification et prendre des mesures

+0

J'ai déjà essayé celui-ci. Le problème est que les e-mails synchronisés à partir d'un serveur imap ne sont pas stockés comme les autres beans, les seuls à être mis en cache. J'ai déjà essayé le hook after_relationship_add sur les comptes et le module Emailaddress mais les deux n'ont pas été lancés. – Velrest

+0

Et la version est: 7.7.6 – Velrest

+0

c'est l'instance ondemand ou sur place? –