/// <summary>
        /// The get content.
        /// </summary>
        /// <param name="emailCargo">
        /// The email Job.
        /// </param>
        /// <returns>
        /// The <see cref="EmailContent"/>.
        /// </returns>
        /// <exception cref="TemplateRenderException">
        /// error while rendering the template
        /// </exception>
        public EmailData GetContent(object emailCargo)
        {
            EmailData          emailData          = null;
            CampaignEmailCargo campaignEmailCargo = emailCargo as CampaignEmailCargo;

            if (campaignEmailCargo != null)
            {
                string locationId = campaignEmailCargo.LocationId;
                CampaignTemplateData campaignTemplateData = new CampaignTemplateData
                {
                    EmailAddress         = campaignEmailCargo.EmailAddress,
                    UnsubscribeUrl       = campaignEmailCargo.UnsubscribeUrl,
                    LocationId           = locationId,
                    Content              = campaignEmailCargo.Content,
                    IncludeBusinessNames = campaignEmailCargo.IncludeBusinessNames
                };

                var model = this._templateModelCreator.GenerateModel(campaignTemplateData);
                if (model != null)
                {
                    EmailRenderingClient <CampaignDataContract> emailRenderingClient = new EmailRenderingClient
                                                                                       <CampaignDataContract>
                    {
                        EmailRenderingServiceUrl = campaignEmailCargo.EmailRenderingServiceAddress
                    };
                    emailData = new EmailData
                    {
                        Subject  = campaignEmailCargo.Subject,
                        HtmlBody = emailRenderingClient.RenderHtml(model)
                    };
                }
            }

            return(emailData);
        }
Example #2
0
        /// <summary>
        /// Creates the email content for deals email
        /// </summary>
        /// <param name="campaignEmailCargo">Deals Email cargo</param>
        /// <returns>EmailContent for deals email</returns>
        private EmailContent PrepareEmail(CampaignEmailCargo campaignEmailCargo)
        {
            EmailContent emailContent = null;
            EmailData    emailData    = _emailContentCreator.GetContent(campaignEmailCargo);

            if (emailData != null)
            {
                bool isTest = (campaignEmailCargo.Hints != null) && campaignEmailCargo.Hints.IsTest;
                emailContent = new EmailContent
                {
                    From        = isTest ? this._emailFromAddressTestAccount : this._emailFromAddress,
                    FromDisplay = this._emailFromDisplay,
                    Subject     = emailData.Subject,
                    HtmlBody    = emailData.HtmlBody,
                    TextBody    = emailData.TextBody,
                    Category    = campaignEmailCargo.Campaign
                };
            }

            return(emailContent);
        }
Example #3
0
        /// <summary>
        /// Handles the Deals email job
        /// </summary>
        /// <param name="emailCargo">Deals email cargo</param>
        public void Handle(EmailCargo emailCargo)
        {
            CampaignEmailCargo campaignEmailCargo = emailCargo as CampaignEmailCargo;

            if (campaignEmailCargo != null)
            {
                EmailContent emailContent = PrepareEmail(campaignEmailCargo);
                if (emailContent != null)
                {
                    bool             isTest  = (campaignEmailCargo.Hints != null) && campaignEmailCargo.Hints.IsTest;
                    SendEmailRequest request = new SendEmailRequest
                    {
                        Content = emailContent,
                        ToList  = new List <string> {
                            campaignEmailCargo.EmailAddress
                        },
                        IsTest = isTest
                    };

                    // Send the email
                    this._userServicesClient.SendEmail(campaignEmailCargo.Id, request, null);
                }
            }
        }