private void SaveMailRecord(string fromDate, string toDate) { var from = DateTime.Parse(fromDate); var to = DateTime.Parse(toDate); MailRecord newEntry = new MailRecord(); newEntry.FromDate = from; newEntry.ToDate = to; this.modelContext.MailRecords.Add(newEntry); this.modelContext.SaveChanges(); }
private static async Task <MailRecord> BuildMailRecordAsync(MailMessage mail) { var mailRecord = new MailRecord { Subject = mail.Subject, Body = mail.Body, IsHtml = mail.IsHtml, To = string.Join(";", mail.To.Select(x => x.ToString())), Cc = string.Join(";", mail.Cc.Select(x => x.ToString())), }; foreach (var item in mail.Attachments) { mailRecord.Attachments.Add(new MailRecordAttachment { Name = item.Name, ContentStream = await ReadStreamAsync(item.ContentStream), ContentType = item.ContentType }); } return(mailRecord); }
private void SendMesseges(IList <FeedRecord> package, int threadId) { var smtp = new SmtpClient(); var sendedCount = 0; var emptyMails = 0; _log.Write(string.Format("----- Поток {0} начинает рассылку ({1} сообщений) -----", threadId, package.Count)); foreach (var messageContent in package) { var messageTemplate = RazorBasedTemplateRenderEngine.NewMailMessageTemplate(messageContent, _assembly); messageTemplate.Execute(); var message = new MailMessage(); message.To.Add(messageTemplate.UserEmail); message.Headers.Add("Precedence", "bulk"); try { if (messageContent.PackFailed) { throw new Exception("Сборка рассылки для пользователя провалилась"); } if (messageContent.IsThereUpdates) { message.Subject = "Демократия2. Обновления за " + messageTemplate.Date.ToString("dd MMMM yyyy"); message.IsBodyHtml = true; message.Body = messageTemplate.Body; message.To.Add(messageTemplate.UserEmail); message.Headers.Add("Precedence", "bulk"); var sendingMessage = "Поток " + threadId + " Отправляем: " + messageTemplate.UserFullName + " подписка: " + messageContent.Content.Count + ", сообщений: " + (messageContent.CommentNotices.Count + messageContent.GroupMemberNotices.Count + messageContent.GroupModeratorNotices.Count + messageContent.PetitionNotices.Count + messageContent.PollNotices.Count + messageContent.PrivateMessages.Count + messageContent.SystemMessages.Count); _log.Write(sendingMessage); if (MainClass.TESTING) { if (!Directory.Exists("messages")) { Directory.CreateDirectory("messages"); } File.WriteAllText("messages\\" + messageTemplate.UserId + ".html", message.Body); sendedCount++; Thread.Sleep(5000); } else { smtp.Send(message); sendedCount++; Thread.Sleep(5000); } } else { var sendingMessage = "Поток " + threadId + " Нечего отправлять: " + messageTemplate.UserFullName; _log.Write(sendingMessage); emptyMails++; } var mailRecord = DataService.PerThread.MailRecordSet.SingleOrDefault(mr => mr.User.Id == messageTemplate.UserId); if (mailRecord != null) { mailRecord.Date = DateTime.Now; mailRecord.IsDelivered = true; } else { var user = DataService.PerThread.BaseUserSet.OfType <User>().SingleOrDefault(u => u.Id == messageTemplate.UserId); if (user != null) { mailRecord = new MailRecord { Date = DateTime.Now, User = user, IsDelivered = true }; DataService.PerThread.MailRecordSet.AddObject(mailRecord); } } } catch (Exception exception) { _log.Write(exception); var mailRecord = DataService.PerThread.MailRecordSet.SingleOrDefault(mr => mr.User.Id == messageTemplate.UserId); if (mailRecord != null) { mailRecord.Date = DateTime.Now; mailRecord.IsDelivered = false; } else { var user = DataService.PerThread.BaseUserSet.OfType <User>().SingleOrDefault(u => u.Id == messageTemplate.UserId); if (user != null) { mailRecord = new MailRecord { Date = DateTime.Now, User = user, IsDelivered = false }; DataService.PerThread.MailRecordSet.AddObject(mailRecord); } } } finally { message.Dispose(); DataService.PerThread.SaveChanges(); } } smtp.Dispose(); _log.Write(string.Format("----- Поток {0} закончил рассылку ({3} сообщений: {1} отправлено, {2} пустых) -----", threadId, sendedCount, emptyMails, package.Count)); }
public void RefreshResultData(IEvent ievent) { DataModel.AwardItems.Clear(); DataModel.RankRewards.Clear(); var info = ievent as MieshiResultEvent; DataModel.KillCount = info.msg.KillCount; DataModel.Score = info.msg.Score; DataModel.Contribution = info.msg.Contribution; DataModel.FightResult = info.msg.IsWin; DataModel.TowerCount = info.msg.TowerCount; Table.ForeachDefendCityReward(record => { if (record.Rank[0] <= info.msg.Rank && record.Rank[1] >= info.msg.Rank) { if (info.msg.TowerCount > 0 && info.msg.TowerCount - 1 < record.Rate.Count && info.msg.IsWin == 1) { DataModel.Rate = record.Rate[info.msg.TowerCount - 1]; } else { DataModel.Rate = -100; } if (info.msg.IsWin == 0) { return(true); } MailRecord tbMail = null; switch (info.msg.TowerCount) { case 6: tbMail = Table.GetMail(record.MailId6); break; case 5: tbMail = Table.GetMail(record.MailId5); break; case 4: tbMail = Table.GetMail(record.MailId4); break; case 3: tbMail = Table.GetMail(record.MailId3); break; case 2: tbMail = Table.GetMail(record.MailId2); break; default: tbMail = Table.GetMail(record.MailId); break; } if (tbMail != null) { var strDic = GameUtils.GetDictionaryText(300000125); string _s = string.Format(strDic, DataModel.Rate); for (int i = 0; i < tbMail.ItemId.Length && i < tbMail.ItemCount.Length; i++) { BagItemDataModel item = new BagItemDataModel(); if (tbMail.ItemId[i] >= 0 && tbMail.ItemCount[i] > 0) { item.ItemId = tbMail.ItemId[i]; item.Count = tbMail.ItemCount[i]; item.strParam = _s; DataModel.RankRewards.Add(item); } } {//灭世积分奖励 BagItemDataModel item = new BagItemDataModel(); item.ItemId = (int)eResourcesType.MieshiScore; item.Count = info.msg.Score; item.strParam = _s; DataModel.RankRewards.Add(item); } } return(false); } return(true); }); for (int i = 0; i < info.msg.ItemId.Count && i < info.msg.ItemNum.Count; i++) { BagItemDataModel item = new BagItemDataModel(); item.ItemId = info.msg.ItemId[i]; item.Count = info.msg.ItemNum[i]; DataModel.AwardItems.Add(item); } var str = GameUtils.GetDictionaryText(300000127); DataModel.strExplain = string.Format(str, info.msg.TowerCount, DataModel.Rate); }