private void ArchiveEmail(Outlook.MailItem objMail, EmailArchiveType archiveType, string strExcludedEmails = "") { Log.Info($"Archiving {archiveType} email “{objMail.Subject}”"); var objEmail = SerialiseEmailObject(objMail, archiveType); Thread objThread = new Thread(() => ArchiveEmailThread(objEmail, archiveType, strExcludedEmails)); objThread.Start(); }
private void ProcessNewMailItem(EmailArchiveType archiveType, Outlook.MailItem mailItem) { if (mailItem == null) { log.Info("New 'mail item' was null"); return; } new EmailArchiving().ProcessEligibleNewMailItem(mailItem, archiveType); }
private void ProcessNewMailItem(EmailArchiveType archiveType, Outlook.MailItem mailItem) { if (mailItem == null) { log.Info("New 'mail item' was null"); return; } new EmailArchiving($"EN-{mailItem.SenderEmailAddress}", Globals.ThisAddIn.Log).ProcessEligibleNewMailItem(mailItem, archiveType); }
public void ArchiveNewMailItem(Outlook.MailItem objMail, EmailArchiveType archiveType) { if (objMail.UserProperties["SuiteCRM"] == null) { ArchiveEmail(objMail, archiveType, this.settings.ExcludedEmails); objMail.UserProperties.Add("SuiteCRM", Outlook.OlUserPropertyType.olText, true, Outlook.OlUserPropertyType.olText); objMail.UserProperties["SuiteCRM"].Value = "True"; objMail.Categories = "SuiteCRM"; objMail.Save(); } }
public ArchiveEmailAction( UserSession session, clsEmailArchive emailToArchive, EmailArchiveType archiveType, List <string> contactIds) : base(5) { this.session = session; this.emailToArchive = emailToArchive; this.achiveType = archiveType; this.contactIds.AddRange(contactIds); }
public void ArchiveNewMailItem(Outlook.MailItem objMail, EmailArchiveType archiveType) { if (objMail.UserProperties["SuiteCRM"] == null) { bool archived = MaybeArchiveEmail(objMail, archiveType, this.settings.ExcludedEmails); objMail.UserProperties.Add("SuiteCRM", Outlook.OlUserPropertyType.olText, true, Outlook.OlUserPropertyType.olText); objMail.UserProperties["SuiteCRM"].Value = archived ? Boolean.TrueString : Boolean.FalseString; if (archived) { objMail.Categories = "SuiteCRM"; } objMail.Save(); } }
private bool MaybeArchiveEmail(Outlook.MailItem mailItem, EmailArchiveType archiveType, string strExcludedEmails = "") { bool result = false; var objEmail = SerialiseEmailObject(mailItem, archiveType); List <string> contactIds = objEmail.GetValidContactIDs(strExcludedEmails); if (contactIds.Count > 0) { Log.Info($"Archiving {archiveType} email “{mailItem.Subject}”"); DaemonWorker.Instance.AddTask(new ArchiveEmailAction(SuiteCRMUserSession, objEmail, archiveType, contactIds)); result = true; } return(result); }
private bool EmailShouldBeArchived(EmailArchiveType type, Outlook.Store store) { var storeId = store.StoreID; switch (type) { case EmailArchiveType.Inbound: return(settings.AccountsToArchiveInbound.Contains(storeId)); case EmailArchiveType.Sent: return(settings.AccountsToArchiveOutbound.Contains(storeId)); default: return(false); } }
public void ProcessEligibleNewMailItem(Outlook.MailItem objMail, EmailArchiveType archiveType) { var parentFolder = objMail.Parent as Outlook.Folder; if (parentFolder == null) { Log.Debug($"NULL email folder for {archiveType} “{objMail.Subject}”"); return; } if (EmailShouldBeArchived(archiveType, parentFolder.Store)) { ArchiveNewMailItem(objMail, archiveType); } else { Log.Debug($"NOT archiving {archiveType} email (folder {parentFolder.Name})"); } }
private clsEmailArchive SerialiseEmailObject(Outlook.MailItem mail, EmailArchiveType archiveType) { clsEmailArchive mailArchive = new clsEmailArchive(SuiteCRMUserSession, Log); mailArchive.From = ExtractSmtpAddressForSender(mail); mailArchive.To = string.Empty; Log.Info($"EmailArchiving.SerialiseEmailObject: serialising mail {mail.Subject} dated {mail.SentOn}."); foreach (Outlook.Recipient objRecepient in mail.Recipients) { string address = GetSmtpAddress(objRecepient); if (mailArchive.To == string.Empty) { mailArchive.To = address; } else { mailArchive.To += ";" + address; } } mailArchive.OutlookId = mail.EntryID; mailArchive.Subject = mail.Subject; mailArchive.Sent = DateTimeOfMailItem(mail, "autoOUTBOUND"); mailArchive.Body = mail.Body; mailArchive.HTMLBody = mail.HTMLBody; mailArchive.ArchiveType = archiveType; if (settings.ArchiveAttachments) { foreach (Outlook.Attachment objMailAttachments in mail.Attachments) { mailArchive.Attachments.Add(new clsEmailAttachments { DisplayName = objMailAttachments.DisplayName, FileContentInBase64String = GetAttachmentBytes(objMailAttachments, mail) }); } } return(mailArchive); }
private void ArchiveEmailThread(clsEmailArchive objEmail, EmailArchiveType archiveType, string strExcludedEmails = "") { try { if (SuiteCRMUserSession != null) { while (SuiteCRMUserSession.AwaitingAuthentication == true) { Thread.Sleep(1000); } if (SuiteCRMUserSession.IsLoggedIn) { objEmail.SuiteCRMUserSession = SuiteCRMUserSession; objEmail.Save(strExcludedEmails); } } } catch (Exception ex) { Log.Error("ThisAddIn.ArchiveEmailThread", ex); } }
private clsEmailArchive SerialiseEmailObject(Outlook.MailItem mail, EmailArchiveType archiveType) { clsEmailArchive mailArchive = new clsEmailArchive(); mailArchive.From = mail.SenderEmailAddress; mailArchive.To = ""; Log.Info($"EmailArchiving.SerialiseEmailObject: serialising mail {mail.Subject} dated {mail.SentOn}."); foreach (Outlook.Recipient objRecepient in mail.Recipients) { if (mailArchive.To == "") { mailArchive.To = objRecepient.Address; } else { mailArchive.To += ";" + objRecepient.Address; } } mailArchive.Subject = mail.Subject; mailArchive.Body = mail.Body; mailArchive.HTMLBody = mail.HTMLBody; mailArchive.ArchiveType = archiveType; if (settings.ArchiveAttachments) { foreach (Outlook.Attachment objMailAttachments in mail.Attachments) { mailArchive.Attachments.Add(new clsEmailAttachments { DisplayName = objMailAttachments.DisplayName, FileContentInBase64String = GetAttachmentBytes(objMailAttachments, mail) }); } } return(mailArchive); }