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() + "&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(); }
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(); }