Ejemplo n.º 1
0
        /// <summary>
        /// Creates the entity object.
        /// </summary>
        /// <param name="metaClassName">Name of the meta class.</param>
        /// <param name="primaryKeyId">The primary key id.</param>
        /// <returns></returns>
        protected override EntityObject CreateEntityObject(string metaClassName, PrimaryKeyId? primaryKeyId)
        {
            if (metaClassName == EmailEntity.ClassName)
            {
                EmailEntity retVal = new EmailEntity();
                retVal.PrimaryKeyId = primaryKeyId;
                return retVal;
            }

            return base.CreateEntityObject(metaClassName, primaryKeyId);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates the entity object.
        /// </summary>
        /// <param name="metaClassName">Name of the meta class.</param>
        /// <param name="primaryKeyId">The primary key id.</param>
        /// <returns></returns>
        protected override EntityObject CreateEntityObject(string metaClassName, PrimaryKeyId?primaryKeyId)
        {
            if (metaClassName == EmailEntity.ClassName)
            {
                EmailEntity retVal = new EmailEntity();
                retVal.PrimaryKeyId = primaryKeyId;
                return(retVal);
            }

            return(base.CreateEntityObject(metaClassName, primaryKeyId));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Copies the email entity to mail message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <returns></returns>
        private MailMessage CopyEmailEntityToMailMessage(EmailEntity message)
        {
            MailMessage outputMessage = new MailMessage();

            outputMessage.Subject = message.Subject;
            outputMessage.From    = EmailUtil.CreateMailAddress(message.From);
            outputMessage.To.Add(EmailUtil.CreateMailAddress(message.To));

            if (!string.IsNullOrEmpty(message.MessageContext))
            {
                outputMessage.MessageContent = message.MessageContext;
            }
            else
            {
                outputMessage.IsBodyHtml = true;
                outputMessage.Body       = message.HtmlBody;
            }
            return(outputMessage);
        }
Ejemplo n.º 4
0
        public override void Invoke()
        {
            // TODO: Remove Expired
            RemoveExpiredMessages();

            //int maxDeliveryAttempts = 100; // TODO: Read From Config
            int maxMessagesPerConnection = 10;

            // Prepare temporary collection
            List <MailMessage> outputMessages             = new List <MailMessage>();
            List <OutgoingMessageQueueEntity> queueEntity = new List <OutgoingMessageQueueEntity>();

            // Load Outgoing Message Queue Entity
            EntityObject[] elements = BusinessManager.List(OutgoingMessageQueueEntity.ClassName,
                                                           OutgoingMessageUtil.CreateEmailDeliveryProviderFilters(),
                                                           new SortingElement[]
            {
                SortingElement.Ascending(OutgoingMessageQueueEntity.FieldSource),
                SortingElement.Ascending(OutgoingMessageQueueEntity.FieldCreated)
            });


            // Run Message Delivery Process
            for (int elementIndex = 0; elementIndex < elements.Length; elementIndex++)
            {
                // Read Element From Outgoing Message Queue
                OutgoingMessageQueueEntity element = (OutgoingMessageQueueEntity)elements[elementIndex];

                // Load Email Message
                EmailEntity emailEntity = (EmailEntity)BusinessManager.Load(EmailEntity.ClassName, element.EmailId.Value);

                // Create Output Mail Message
                MailMessage outputMessage = CopyEmailEntityToMailMessage(emailEntity);

                // Add Output message to Output queue
                outputMessages.Add(outputMessage);
                queueEntity.Add(element);

                string currentSource     = element.Source;
                string nextElementSource = (elementIndex < (elements.Length - 1)) ?
                                           ((OutgoingMessageQueueEntity)elements[elementIndex + 1]).Source :
                                           string.Empty;

                if (outputMessages.Count < maxMessagesPerConnection &&
                    currentSource == nextElementSource)
                {
                    continue;
                }

                // Send Output queue
                try
                {
                    // OZ [2010-03-03]: Check that SmtpServer is configured. Write To Outgoing log
                    if (SmtpBox.TotalCount() == 0)
                    {
                        throw new SmtpNotConfiguredException();
                    }

                    // Initialize Smtp Client
                    SmtpClient smtpClient = Mediachase.IBN.Business.EMail.SmtpClientUtility.CreateSmtpClient(element.Source);

                    // Send
                    smtpClient.Send(outputMessages.ToArray());

                    // Process result
                    ProcessSendResult(outputMessages, queueEntity);
                }
                catch (Exception ex)
                {
                    ProcessException(outputMessages, queueEntity, ex);
                }

                // Clear Output queue
                outputMessages.Clear();
                queueEntity.Clear();
            }

            //
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Copies the email entity to mail message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <returns></returns>
        private MailMessage CopyEmailEntityToMailMessage(EmailEntity message)
        {
            MailMessage outputMessage = new MailMessage();

            outputMessage.Subject = message.Subject;
            outputMessage.From = EmailUtil.CreateMailAddress(message.From);
            outputMessage.To.Add(EmailUtil.CreateMailAddress(message.To));

            if (!string.IsNullOrEmpty(message.MessageContext))
            {
                outputMessage.MessageContent = message.MessageContext;
            }
            else
            {
                outputMessage.IsBodyHtml = true;
                outputMessage.Body = message.HtmlBody;
            }
            return outputMessage;
        }