protected override bool Process(Package package) { PXGraph graph = package.Graph; EMailAccount account = package.Account; CRSMEmail message = package.Message; if (account != null && ( (account.ForbidRouting ?? false) || !(account.RouteEmployeeEmails ?? false) )) { return(false); } bool?isFromInternalUser = IsFromInternalUser(graph, message); var recipients = new MailAddressList(); if (isFromInternalUser == true) { recipients.AddRange(GetExternalRecipient(graph, message)); } else if (isFromInternalUser == false) { recipients.AddRange(GetInternalRecipient(graph, message)); } else { return(false); // for those users and employees which are disabled or RouteEmails switched off } RemoveAddress(recipients, message.MailFrom); RemoveAddress(recipients, message.MailTo); RemoveAddress(recipients, message.MailCc); RemoveAddress(recipients, message.MailBcc); if (recipients.Count == 0) { return(false); } if (isFromInternalUser == true) { SendCopyMessageToOutside(graph, package.Account, message, recipients); MarkAsRoutingEmail(graph, message); MarkAsRead(graph, message); } else { SendCopyMessageToInside(graph, package.Account, message, recipients); } graph.EnsureCachePersistence(message.GetType()); return(true); }
protected override bool Process(Package package) { PXGraph graph = package.Graph; EMailAccount account = package.Account; CRSMEmail message = package.Message; if (account != null && (account.ForbidRouting ?? false)) { return(false); } var isFromInternalUser = IsFromInternalUser(graph, message); var recipients = new MailAddressList(); if (isFromInternalUser) { recipients.AddRange(GetExternalRecipient(graph, message)); } else { recipients.AddRange(GetInternalRecipient(graph, message)); } RemoveAddress(recipients, message.MailFrom); RemoveAddress(recipients, message.MailTo); RemoveAddress(recipients, message.MailCc); RemoveAddress(recipients, message.MailBcc); if (recipients.Count == 0) { return(false); } if (isFromInternalUser) { SendCopyMessageToOutside(graph, package.Account, message, recipients); MarkAsRoutingEmail(graph, message); MarkAsRead(graph, message); } else { SendCopyMessageToInside(graph, package.Account, message, recipients); } graph.EnsureCachePersistence(message.GetType()); return(true); }
protected override bool Process(Package package) { PXGraph graph = package.Graph; CRSMEmail message = package.Message; if (message.IsIncome != true) { return(false); } var isFromInternalUser = message.ClassID == CRActivityClass.EmailRouting; var recipients = new MailAddressList(); if (isFromInternalUser) { recipients.AddRange(GetFromInternal(graph, message)); } else { recipients.AddRange(GetFromExternal(graph, message)); } RemoveAddress(recipients, message.MailFrom); RemoveAddress(recipients, message.MailTo); RemoveAddress(recipients, message.MailCc); RemoveAddress(recipients, message.MailBcc); if (recipients.Count == 0) { return(false); } SendCopyMessageToInside(package.Graph, package.Account, message, recipients); graph.EnsureCachePersistence(message.GetType()); return(true); }
protected override bool Process(Package package) { var graph = package.Graph; var message = package.Message; var isFromInternalUser = IsFromInternalUser(graph, message); var recipients = new MailAddressList(); if (isFromInternalUser) { recipients.AddRange(GetExternalRecipient(graph, message)); } else { recipients.AddRange(GetInternalRecipient(graph, message)); } ExcludeMailboxes(recipients, message.MailFrom); ExcludeAddresses(recipients, message.MailTo); ExcludeAddresses(recipients, message.MailCc); ExcludeAddresses(recipients, message.MailBcc); if (recipients.Count == 0) { return(false); } if (isFromInternalUser) { SendCopyMessageToOutside(graph, message, recipients); MarkAsRoutingEmail(graph, message); } else { SendCopyMessageToInside(graph, package.Account, message, recipients); } package.Graph.EnshureCachePersistance(message.GetType()); return(true); }
private MailAddressList GetFromExternal(PXGraph graph, CRSMEmail message) { var recipients = new MailAddressList(); recipients.AddRange(GetOwnerAddressByNote(graph, message.RefNoteID, message.OwnerID)); var routingMessage = GetRoutingMessage(graph, message); if (routingMessage != null) { RemoveAddress(recipients, routingMessage.MailFrom); RemoveAddress(recipients, routingMessage.MailTo); RemoveAddress(recipients, routingMessage.MailCc); RemoveAddress(recipients, routingMessage.MailBcc); } return(recipients); }