/// <summary> /// 递增发件量 /// </summary> /// <returns>true:可以继续发件;false:发件已达到最大数量</returns> public bool IncreaseSentCount(LiteDBManager liteDb, Setting globalSetting) { // 判断日期是否是今天,如果不是,则将当天发件数置 0 string date = DateTime.Now.ToString("yyyy-MM-dd"); if (date != settings.recordDate) { settings.recordDate = date; settings.sentCountToday = 0; } settings.sentCountToday++; settings.sendCountTotal++; // 保存到数据库 liteDb.Update(this); int maxEmails = settings.maxEmailsPerDay > 0 ? settings.maxEmailsPerDay : globalSetting.maxEmailsPerDay; if (maxEmails < 1) { return(true); } return(settings.sendCountTotal <= maxEmails); }
/// <summary> /// 将发送内容转成图片 /// </summary> /// <param name="sendItem"></param> private async Task <bool> ConvertToImage(Setting setting, SendItem sendItem) { if (sendItem.sendItemType == SendItemType.dataUrl && setting.sendWithImageAndHtml && string.IsNullOrEmpty(sendItem.dataUrl)) { // 从前端转存图片 ReceivedMessage message = await SendCallback.Insance.SendAsync(_userId, new Protocol.Response() { eventName = "sendingInfo", command = "html2image", result = sendItem, }); if (message == null) { return(false); } // 将结果添加到sendItem中 var dataUrl = message.JObject.SelectToken("result"); if (dataUrl == null) { return(false); } dataUrl = dataUrl.Value <string>(); sendItem.dataUrl = $"<img src=\"{dataUrl}\">"; // 更新保存的数据 _liteDb.Update(sendItem); } return(true); }
/// <summary> /// 开始发送未发送成功的数据 /// </summary> /// <param name="sendItemIds">传入需要重新发送的id</param> /// <returns></returns> public bool StartSending() { // 判断是否结束 if (!SendStatus.HasFlag(SendStatus.SendFinish)) { return(false); } var allSendItems = _liteDb.Fetch <SendItem>(item => item.historyId == _currentHistoryGroupId); var sendItems = allSendItems.FindAll(item => !item.isSent); // 判断数量 if (sendItems.Count < 1) { // 发送完成的进度条 SendingProgressInfo = new SendingProgressInfo() { total = 1, index = 1, }; return(true); } else { // 更改进度 SendingProgressInfo = new SendingProgressInfo() { total = sendItems.Count, index = 0, }; } // 判断是发送还是重发 if (allSendItems.Count == sendItems.Count) { SendStatus = SendStatus.Sending; } else { SendStatus = SendStatus.Resending; } // 更改数据库中的状态 var history = _liteDb.SingleById <HistoryGroup>(_currentHistoryGroupId); if (history == null) { return(false); } history.sendStatus = SendStatus; _liteDb.Update(history); // 判断需要发送的数量 if (allSendItems.Count < 1) { history.sendStatus = SendStatus.SendFinish; _liteDb.Update(history); // 获取重发完成的信息 var sendingInfo = new SendingProgressInfo() { historyId = _currentHistoryGroupId, index = 1, total = 1, }; SendingProgressInfo = sendingInfo; return(false); } // 处理每条邮件 PreHandleSendItems(sendItems); // 开始发件 SendItems(sendItems); return(true); }