Esempio n. 1
0
        private void BindGrid()
        {
            List <LetterSendLog> LetterSendLogList
                = LetterSendLog.GetPage(
                      letterGuid,
                      pageNumber,
                      pageSize,
                      out totalPages);


            if (this.totalPages > 1)
            {
                string pageUrl = SiteUtils.GetNavigationSiteRoot()
                                 + "/eletter/SendLog.aspx?letter=" + letterGuid.ToString() + "&amp;pagenumber={0}";

                pgrSendLog.PageURLFormat = pageUrl;
                pgrSendLog.ShowFirstLast = true;
                pgrSendLog.CurrentIndex  = pageNumber;
                pgrSendLog.PageSize      = pageSize;
                pgrSendLog.PageCount     = totalPages;
            }
            else
            {
                pgrSendLog.Visible = false;
            }

            grdSendLog.DataSource = LetterSendLogList;
            grdSendLog.PageIndex  = pageNumber;
            grdSendLog.PageSize   = pageSize;
            grdSendLog.DataBind();
        }
Esempio n. 2
0
        void btnPurgeSendLogs_Click(object sender, EventArgs e)
        {
            LetterSendLog.DeleteByLetterInfo(letterInfoGuid);

            WebUtils.SetupRedirect(this, Request.RawUrl);

        }
        private void ReportStatus()
        {
            TaskQueue task = new TaskQueue(this.taskGuid);

            if (totalSubscribersToSend > 0)
            {
                task.CompleteRatio = (Convert.ToDouble(subscribersSentSoFar) / Convert.ToDouble(totalSubscribersToSend));
            }
            else
            {
                task.CompleteRatio = 1; //nothing to send so mark as complete
            }

            if (task.CompleteRatio >= 1)
            {
                task.Status = statusCompleteMessage;

                if (task.CompleteUTC == DateTime.MinValue)
                {
                    task.CompleteUTC = DateTime.UtcNow;
                }

                Letter letter = new Letter(this.letterGuid);
                letter.TrackSendComplete(LetterSendLog.GetCount(letter.LetterGuid));
            }
            else
            {
                try
                {
                    task.Status = string.Format(
                        CultureInfo.InvariantCulture,
                        Resource.NewsletterProgressFormat,
                        subscribersSentSoFar,
                        totalSubscribersToSend);
                }
                catch (FormatException)
                {
                    task.Status = string.Format(
                        CultureInfo.InvariantCulture,
                        statusRunningMessage,
                        subscribersSentSoFar,
                        totalSubscribersToSend);
                }
            }


            task.LastStatusUpdateUTC = DateTime.UtcNow;
            task.Save();

            nextStatusUpdateTime = DateTime.UtcNow.AddSeconds(updateFrequency);
        }
        private void SendLetter(
            SmtpSettings smtpSettings,
            LetterInfo letterInfo,
            Letter letter,
            LetterSubscriber subscriber)
        {
            // TODO: use multi part email with both html and plain text body
            // instead of this either or approach?

            LetterSendLog mailLog = new LetterSendLog();

            mailLog.EmailAddress  = subscriber.EmailAddress;
            mailLog.LetterGuid    = letter.LetterGuid;
            mailLog.UserGuid      = subscriber.UserGuid;
            mailLog.SubscribeGuid = subscriber.SubscribeGuid;

            if (testMode)
            {
                Thread.Sleep(testSleepMilliseconds); // sleep 1 seconds per message to simulate
            }
            else
            {
                try
                {
                    if (subscriber.UseHtml)
                    {
                        Email.SendEmail(
                            smtpSettings,
                            letterInfo.FromAddress.Coalesce(notificationFromEmail),
                            letterInfo.ReplyToAddress.Coalesce(notificationFromEmail),
                            subscriber.EmailAddress,
                            string.Empty,
                            string.Empty,
                            letter.Subject,
                            ReplaceHtmlTokens(letter.HtmlBody, subscriber),
                            subscriber.UseHtml,
                            "Normal");
                    }
                    else
                    {
                        Email.SendEmail(
                            smtpSettings,
                            letterInfo.FromAddress.Coalesce(notificationFromEmail),
                            letterInfo.ReplyToAddress.Coalesce(notificationFromEmail),
                            subscriber.EmailAddress,
                            string.Empty,
                            string.Empty,
                            letter.Subject,
                            ReplaceTextTokens(letter.TextBody, subscriber),
                            subscriber.UseHtml,
                            "Normal");
                    }
                }
                catch (Exception ex)
                {
                    // TODO: catch more specific exception(s) figure out what ones can be thrown here
                    mailLog.ErrorOccurred = true;
                    mailLog.ErrorMessage  = ex.ToString();
                    log.Error(ex);
                }
            }

            mailLog.Save();
        }