Exemplo n.º 1
0
        /// <summary>
        ///     Formats the specified message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="formattedMessage">The formatted message.</param>
        /// <param name="inbox">The inbox.</param>
        /// <returns>Enumeration value indicating the result of the format.</returns>
        public MailMessageFormatterResult Format(MailMessage message, ReceivedEmailMessage formattedMessage, IEntity inbox)
        {
            if (message == null || formattedMessage == null || inbox == null)
            {
                return(MailMessageFormatterResult.Skip);
            }

            var iCalMessage = formattedMessage.As <ReceivedICalEmailMessage>( );

            if (iCalMessage == null)
            {
                EventLog.Application.WriteError("The ReceivedEmailMessage was not of type 'ReceivedICalEmailMessage'");

                return(MailMessageFormatterResult.Error);
            }

            string iCalString;

            MailMessageFormatterResult result = GetICalUpdate(message, iCalMessage, out iCalString);

            if (result == MailMessageFormatterResult.Ok)
            {
                iCalMessage.ICalUpdate = iCalString;
            }

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Processes and saves the email messages for the Inbox
        /// </summary>
        /// <param name="inbox">The inbox that the messages are to be loaded for</param>
        /// <param name="emailMessages">List of email messages who's To address matches the Inboxes email address</param>
        void ProcessEmailsForInbox(Inbox inbox, IReadOnlyCollection <MailMessage> emailMessages)
        {
            EventLog.Application.WriteTrace("Processing {0} emails for inbox '{1}'", emailMessages.Count, inbox.Name);

            var formatters = GetEmailMessageFormatters(inbox);
            var messages   = new List <ReceivedEmailMessage>();

            foreach (MailMessage message in emailMessages)
            {
                var receivedMessage = CreateReceivedEmailMessage(message, inbox.InboxReceivedMessageType);

                bool process = true;
                foreach (IMailMessageFormatter <ReceivedEmailMessage> formatter in formatters)
                {
                    MailMessageFormatterResult mailMessageFormatterResult = formatter.Format(message, receivedMessage, inbox);

                    if (mailMessageFormatterResult == MailMessageFormatterResult.Reject || mailMessageFormatterResult == MailMessageFormatterResult.Error)
                    {
                        receivedMessage.Dispose();
                        process = false;
                        break;
                    }
                }

                if (process)
                {
                    messages.Add(receivedMessage);
                }
            }

            if (messages.Count <= 0)
            {
                return;
            }

            if (messages.Count > 0)
            {
                SaveWithActions(inbox, messages);

                StartWorkflows(inbox, messages);
            }
        }