/// <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); }
/// <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)); }
/// <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); }
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(); } // }
/// <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; }